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