字符串作为PLSQL中IF语句中的条件
Posted
技术标签:
【中文标题】字符串作为PLSQL中IF语句中的条件【英文标题】:String as condition inside IF statement in PLSQL 【发布时间】:2014-12-03 13:39:57 【问题描述】:我想在 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;
需要帮助...
【问题讨论】:
我得到以下错误-ORA-06550:第 5 行,第 4 列:PLS-00382:表达式类型错误 ORA-06550:第 5 行,第 1 列:PL/SQL:语句被忽略跨度> 【参考方案1】:IF
需要布尔表达式,因此您必须将字符串转换为返回 true 或 false 的内容(如 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;
但老实说,我觉得这个解决方案“丑陋”(而且很危险)。为什么需要这样做?您要解决的问题是什么?
【讨论】:
【参考方案2】:If 语句中的条件应该是返回真或假
If (Boolean)
Begin
.
END
【讨论】:
以上是关于字符串作为PLSQL中IF语句中的条件的主要内容,如果未能解决你的问题,请参考以下文章
oracle截取某一字符串中的全部数字作为另外一个查询语句中in的查询条件,怎么做