Bonjour,

J'aimerai faire une boucle sur un delete. J'arrive à la faire marcher mais quand j'essaie d'intéger EXCEPTION cela ne marche plus...


Voici le code. Ce que je comprends pas c'est que si je fais le delete sans la partie EXCEPTION ça marche trés bien et quand je rajoute la partie EXCEPTION il me met l'erreur suivante


  • Erreur(479,8): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: begin case declare end exit for goto if loop mod null pragma raise return select update while with << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe



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
   select count(*) into nb_min_apurge FROM table
   WHERE id_d in (SELECT ID_D FROM tmp_id_d);
    nb_boucle := CEIL(nb_min_apurge/10);
 
 
    BEGIN
      For i in 1..nb_boucle
      LOOP
        DELETE FROM table
        WHERE (ID_D IN (SELECT ID_D FROM tmp_id_d)) and (rownum <= 10)  ;
        nbPurge := SQL%ROWCOUNT;
         DBMS_OUTPUT.PUT_LINE (to_char (i)|| ' NB_LIGNES_PURGEES : ' || SQL%ROWCOUNT);
      EXCEPTION
      WHEN OTHERS THEN
       outMsgErr := SQLERRM;
         dbms_output.put_line( 'Code    erreur : ' || to_char( SQLCODE )) ;
         dbms_output.put_line( 'libellé erreur : ' || to_char( SQLERRM )) ; 
         ROLLBACK;
         LogErreur (NOM_TABLE_PURGE, outMsgErr);
         RETURN -1;
        End loop ;
    END;


Quelqu'un sait-il pourquoi j'ai cette erreur?

Merci d'avance.