我试图从动态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
。
这个问题有解决方法吗?
答案 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 auditing或Flashback Data Archive。