我正在尝试从动态 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
。
有没有解决这个问题的方法?
我正在尝试从动态 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审计或闪回数据存档。