在触发器中使用立即执行引用新变量
referencing new variable using execute immediate in trigger
我正在尝试从动态 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;
更新:从下面的讨论来看,你似乎想要 build the set of :new
references dynamically. This is not possible. Instead you might be able to generate the entire trigger dynamically as part of your release process, or else enable the built-in Oracle auditing or Flashback Data Archive。
我正在尝试从动态 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;
更新:从下面的讨论来看,你似乎想要 build the set of :new
references dynamically. This is not possible. Instead you might be able to generate the entire trigger dynamically as part of your release process, or else enable the built-in Oracle auditing or Flashback Data Archive。