Bonjour ,

Merci de me guider afin d'optimiser ce PL/SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
create or replace TRIGGER FACTUREF_ANNEE_NUMERO
BEFORE INSERT ON FACTUREF for each row
 
DECLARE
    NEW_CLE_FAC VARCHAR2(8);
    NB NUMERIC;
    CPT NUMERIC;
 
BEGIN
 
SELECT count(CLE_FAC) INTO CPT FROM FACTUREF WHERE ANNEE_FAC = :new.ANNEE_FAC ;
 
if CPT > 0 then
 
     SELECT MAX(CLE_FAC) INTO NEW_CLE_FAC FROM FACTUREF WHERE ANNEE_FAC = :new.ANNEE_FAC ;
 
     NEW_CLE_FAC := SUBSTR(NEW_CLE_FAC, 3, 8);
     NB := cast(NEW_CLE_FAC as numeric ) ;
     NB := NB + 1;
      NEW_CLE_FAC := cast(nb as varchar2);
     :new.CLE_FAC := concat(:new.ANNEE_FAC , LPAD(NEW_CLE_FAC, 6, '0')); 
 ELSE
    :new.CLE_FAC := concat(:new.ANNEE_FAC , '000001' ) ; 
END IF;