我想在Oracle PLSQL的IF语句中将字符串替换为条件。请查看下面的匿名块,并告知我如何达到要求。
DECLARE
var_bool1 varchar2(100);
BEGIN
var_bool1 := '3<5 AND 5<8';
IF (var_bool1) THEN
DBMS_OUTPUT.PUT_LINE('SUCCESS');
END IF;
END;
我知道我可以写下面的IF语句,但我正在寻找上述特定的请求。
IF (3<5 AND 5<8) THEN
...
END IF;
需要帮助...
答案 0 :(得分:0)
条件应该在If语句中返回True或False
If (Boolean)
Begin
.
END
答案 1 :(得分:0)
IF
需要布尔表达式,因此您必须将字符串转换为返回true或false的字符串(如Dhaval所写)。例如,您可以定义一个评估表达式的函数,如(function bool
):
DECLARE
var_bool1 varchar2(100);
function bool(p_expression in varchar2) return boolean is
l_result number;
begin
execute immediate 'select count(*) from dual where ' || p_expression
into l_result;
return l_result = 1;
end;
BEGIN
var_bool1 := '3<5 AND 5<8';
IF bool(var_bool1) THEN
DBMS_OUTPUT.PUT_LINE('SUCCESS');
END IF;
END;
但说实话,我发现这个解决方案“丑陋”(并且很危险)。你为什么需要这样做?你试图解决的问题是什么?