2014-12-03 81 views
0

我想在Oracle PLSQL的IF语句中将字符串替换为条件。请看下面的匿名块,并告诉我如何达到要求。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语句如下,但是我正在寻找像上述特定REQ。

IF (3<5 AND 5<8) THEN 
... 
END IF; 

需要帮助,请...

+0

我得到下面的错误-ORA-06550:第5行,第4栏: PLS-00382:表达式是错误的类型 ORA-06550的:第5行,第1列: PL/SQL:语句忽略 – 2014-12-03 13:45:53

回答

0

条件应为返回TRUE或FALSE的声明如果

If (Boolean) 
    Begin 
    . 
    END 
0

IF预计布尔表达式,所以你必须将字符串翻译成什么返回真假(正如Dhaval写的)。例如,您可以定义一个计算表达式这样的(功能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; 

但说实话,我觉得这个解决方案“丑”(和危险)。你为什么需要这样做?你试图解决什么问题?