字符串作为PLSQL中IF语句内的条件

时间:2014-12-03 13:39:57

标签: if-statement plsql

我想在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;

需要帮助...

2 个答案:

答案 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;

但说实话,我发现这个解决方案“丑陋”(并且很危险)。你为什么需要这样做?你试图解决的问题是什么?