| 12
 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
 
 |  
begin
 
curseur1
loop
   FORALL INTCONT IN 1..tableau.COUNT SAVE EXCEPTIONS
     insert into table values(...);
EXCEPTION WHEN DML_ERRORS THEN
            V_ERRORS := SQL%BULK_EXCEPTIONS.COUNT;
 
            FOR i IN 1..V_ERRORS
            LOOP
              IF SQL%BULK_EXCEPTIONS(i).ERROR_CODE = -1 THEN
                V_INDEX := SQL%BULK_EXCEPTIONS(i).ERROR_INDEX;
 
                UPDATE table
                   SET c1  = NVL(tableau2(V_INDEX),0),
                         c2  = NVL(tableau3(V_INDEX),0),
                         c3  = NVL(tableau4(V_INDEX),0),
                         c4  = NVL(tableau5(V_INDEX),0),
                         c5  = SYSDATE
                 WHERE critere1
                    AND critere2
                    AND critere3;
              END IF;
            END LOOP;
        END;
 
        FORALL INTCONT IN 1..tableau.COUNT
          UPDATE table
             SET c1  = NVL(tableau2(V_INDEX),0),
                         c2  = NVL(tableau3(V_INDEX),0),
                         c3  = NVL(tableau4(V_INDEX),0),
                         c4  = NVL(tableau5(V_INDEX),0),
 
           WHERE critere1
               AND critere2
               AND critere3
             AND   critere4;
 
 
      END LOOP; | 
Partager