如何限定触发器主体内的变量(PL/SQL)?

a1e*_*x07 5 trigger oracle plsql

我可以在存储过程或函数的主体中显式限定变量:

create or replace
PROCEDURE ptest  AS
int_val INT;
BEGIN
  ptest.int_val:=0;
END;
/
Run Code Online (Sandbox Code Playgroud)

如何做同样的内部触发器?

 create table temp1(id int not null);

 create or replace trigger trg_before_insert_temp1 before insert  on temp1 for each row
declare int_val int;
 begin

   trg_before_insert_temp1.int_val := 0; -- PLS-00201, identifier must be declared

 end trg_before_insert_temp1;
 /
Run Code Online (Sandbox Code Playgroud)

Lei*_*fel 8

有趣的问题。据我所知,这是不可能的,尽管看起来应该如此。除非其他人可以展示它是如何完成的,否则一种解决方法是将代码嵌套在一个块中:

create or replace trigger trg_before_insert_temp1 before insert on temp1 for each row
declare
begin
   <<bob>> declare
      int_val int;
   BEGIN
      bob.int_val := 0; 
   END;
end trg_before_insert_temp1;
Run Code Online (Sandbox Code Playgroud)