在动态SQL语句中使用函数调用

时间:2016-07-06 14:02:00

标签: sql oracle function dynamic

在存储过程中我有一个连接的SQL语句。这包括选择部分中的大型表达式。实际上,当执行立即命令运行时,一切正常。现在我想通过在函数中打包这个大案例Expression来使该语句更易读,但无论我尝试它失败。甚至可以在动态SQL中调用函数吗?

1 个答案:

答案 0 :(得分:0)

如果你使用12c并且你只对这个sql语句使用这个函数,你可以在sql语句的WITH子句中使用PL / SQL声明部分

Declare
myvariable number;
Begin

    EXECUTE IMMEDIATE'
    WITH
      FUNCTION with_function(p_id IN NUMBER) RETURN NUMBER IS
      BEGIN
        RETURN p_id * p_id - p_id;
      END;
    SELECT with_function(3)
    FROM   dual
    WHERE  rownum = 1' into myvariable;
    dbms_output.put_line('myvariable: '||myvariable);
    End;