Bonjour à tous,

J'ai actuellement un stored proc qui fonctionne (chargement de donnée dans une table)
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
create or replace
procedure imp_cap_brand as
begin
 
declare
error_var integer;
my_select VARCHAR2(4000);
  begin
      DBMS_ERRLOG.CREATE_ERROR_LOG('BRD', 'ERRLOG'); --création de la table de log d'erreur
 
      MERGE INTO BRD  --debut du merge
      USING WK_CAP_MANUFACTURERS WK_BRD
      ON (WK_BRD.MANUFACTURER_CODE=BRD.BRD_ID)
      WHEN MATCHED THEN 
                  UPDATE SET BRD.BRD_NM = WK_BRD.MANUFACTURER_NAME, 
                             BRD.BRD_ABBR = WK_BRD.MANUFACTURER_CAP_CODE_LOOKUP,
                             BRD.BRD_TYP_CD = '001'
      WHEN NOT MATCHED THEN 
                  INSERT (BRD.BRD_ID,BRD.BRD_NM,BRD.BRD_ABBR,BRD.BRD_TYP_CD) 
                  VALUES (WK_BRD.MANUFACTURER_CODE ,WK_BRD.MANUFACTURER_NAME ,WK_BRD.MANUFACTURER_CAP_CODE_LOOKUP, '001')
                  LOG ERRORS INTO errlog ('BRD_MERGE_INSERT');
 
      -- on teste si on a rencontré une erreure durant le merge
      my_select := 'SELECT count(ORA_ERR_NUMBER$) FROM errlog';
      execute immediate(my_select) into error_var;
      DBMS_OUTPUT.PUT_LINE(error_var);
 
      If error_var = 0 
      Then 
        DBMS_OUTPUT.PUT_LINE('Aucune erreure');
      else
        DBMS_OUTPUT.PUT_LINE('Erreure trouvée'); 
      End if;            
 
      my_select := 'DROP TABLE ERRLOG';
      execute immediate(my_select);
 
      --gestion des erreures c'est là que j aimerai retourné dans le merge
      exception 
      when others then 
            DBMS_OUTPUT.PUT_LINE('Erreure remontée');
            --rollback;  -- rollback la transaction
            --raise; 
  end;
end imp_cap_brand;
Mon souci c'est que à la premiére erreure du merge, Oracle sort de la procédure. Moi j'aimerai parcourir tous le senregistrements et poursuivre malgré une erreure. Pensez vous que c'est possible avec MERGE ?