web-dev-qa-db-fra.com

Comment qualifier la variable à l'intérieur du corps de déclenchement (PL / SQL)?

Je peux explicitement qualifier la variable dans le corps de la procédure stockée ou de la fonction:

create or replace
PROCEDURE ptest  AS
int_val INT;
BEGIN
  ptest.int_val:=0;
END;
/

Comment faire la même gâchette à l'intérieur?

 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;
 /
5
a1ex07

Question interessante. Pour autant que je sache, cela n'est pas possible, même si cela semble être. À moins que quelqu'un d'autre puisse montrer comment cela peut être fait, une solution de contournement serait d'imbriquer le code dans un bloc:

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;
8
Leigh Riffel