Bonjour,

Je ne suis pas un utilisateur de trigger en général, c'est pour ceci que je viens demander votre aide car je ne trouve aucun moyen de résoudre mon problème...

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
CREATE OR REPLACE TRIGGER INS_UPD_bkizcprt
   AFTER INSERT OR UPDATE ON BKIZCPRT
   FOR EACH ROW
 
   DECLARE
      f_sit_cent              CHAR(5)  := '99000';
      f_date_comptable1       CHAR(8)  := '02011900';
      f_date_comptable2       CHAR(8)  := '02011900';
      CURSOR cur_bkizcprt
         IS
         SELECT * FROM bkizcprt
         AND   age  = :OLD.age
         AND   ope  = :OLD.ope
         AND   eve  = :OLD.eve
         AND   ave  = :OLD.ave
         AND  iden  = :OLD.iden
         AND  lang  = :OLD.lang;
 
      f_bkizcprt cur_bkizcprt%ROWTYPE;
 
      CURSOR cur_sit_cent
         IS
         SELECT MNT1
         FROM BKNOM
         WHERE CTAB = '098'
         AND CACC = 'CENT';
 
      CURSOR cur_date_comptable
         IS
         SELECT MNT1, MNT2
         FROM BKNOM
         WHERE CTAB = '001'
         AND CACC = f_sit_cent
         AND AGE = f_sit_cent;
 
   BEGIN
      OPEN cur_bkizcprt;
      FETCH cur_bkizcprt INTO f_bkizcprt;
      IF cur_bkizcprt%FOUND THEN
         -- Recherche du site central
         OPEN cur_sit_cent;
         FETCH cur_sit_cent INTO f_sit_cent;
 
         IF cur_sit_cent%FOUND THEN
            -- Recherche de la date comptable
            OPEN cur_date_comptable;
            FETCH cur_date_comptable INTO f_date_comptable1, f_date_comptable2;
 
            IF cur_date_comptable%FOUND THEN
               -- Quelle est la bonne date comptable ?
               IF f_date_comptable2 IS NULL THEN
                  :NEW.date_dermodif := f_date_comptable1;
               ELSE
                  :NEW.date_dermodif := f_date_comptable2;
               END IF;
            END IF;
         END IF;
 
         UPDATE bkizcprt SET
         date_dermodif  = to_date(:NEW.date_dermodif)    --Date de modifcation
         WHERE age = :OLD.age
         AND   ope = :OLD.ope
         AND   eve = :OLD.eve
         AND   ave = :OLD.ave
         AND  iden = :OLD.iden
         AND  lang = :OLD.lang
         ;
 
      END IF;
   END;
   /
 
SHOW errors;
 
exit;
Il s'avère que en essayant d'exécuter avec sqlplus voici les erreurs que j'obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
7/10     PL/SQL: SQL Statement ignored
8/10     PL/SQL: ORA-00933: la commande SQL ne se termine pas correctement
Cependant, je trouve que cela ne correspond à rien...
Si une âme charitable pouvait m'aider svp.

Merci d'avance.