使用execute immediate in触发器引用新变量



我正在尝试从动态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 .

有解决这个问题的方法吗?

execute immediate语句不与调用者共享变量作用域。(另外,引号语句中的:表示绑定变量。)您必须将该值作为绑定变量传入。

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

更新:从下面的讨论看来,你想动态地构建:new引用集。这是不可能的。相反,您可以动态地生成整个触发器,作为发布过程的一部分,或者启用内置的Oracle审计或Flashback Data Archive。

相关内容

  • 没有找到相关文章

最新更新