【问题标题】:String as condition inside IF statement in PLSQL字符串作为PLSQL中IF语句中的条件
【发布时间】: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:语句被忽略跨度>

标签: if-statement plsql


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 2023-03-20
      • 2014-08-05
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多