2

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

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

4

1 回答 1

2

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

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

更新:从下面的讨论来看,您似乎想要动态地构建一组:new引用。这是不可能的。相反,您可能能够在发布过程中动态生成整个触发器,或者启用内置的 Oracle审计闪回数据存档

于 2016-10-06T09:56:12.970 回答