使用execute immediate in trigger引用新变量

时间:2016-10-06 09:51:31

标签: oracle variables plsql execute-immediate

我试图从动态sql引用我的新变量。

如果我尝试select :NEW.zh_naam into v_var from dual;,并打印出我的变量,那么一切都会完美无缺。

但是当我尝试使用动态sql时,如execute immediate('select :NEW.zh_naam from dual') into v_var,我收到一条错误消息ORA-01008: not all variables bound

这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:2)

execute immediate语句不与调用者共享变量范围。 (引用语句中的:也表示绑定变量。)您必须将值作为绑定变量传递。

execute immediate 'select :b from dual' into v_var using :new.zh_naam;

更新:从下面的讨论中,您似乎想要build the set of :new references dynamically。这是不可能的。相反,您可以在发布过程中动态生成整个触发器,或者启用内置Oracle auditingFlashback Data Archive