字符串作为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的查询条件,怎么做

条件 If 语句:如果行中的值包含字符串...设置另一列等于字符串

shell 语言中的 if 条件判断

java中的if条件是不是可以用变量来判断

shell 语言中的 if 条件判断

Cmake中的条件判断if/elseif/else