IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Trigger: probleme avec le :new.


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut Trigger: probleme avec le :new.
    Salut tout le monde, j’ai un gros problème et c’est très urgent. En fait je n’arrive pas à compiler un trigger (qui pourtant marchait bien sur la 8i) sous oracle 10g. Voici l’erreur qui est générée : « Paramètre IN ou OUT absent dans l’index ::1 ». Il semble bien que ce soit le :NEW qui pose problème car après avoir mis en commentaire toutes les lignes dans lesquelles il apparaît, il n’y a plus d’erreur de compilation. Quelqu’un peut-il m’aider SVP ?
    Voici le script :

    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
    CREATE OR REPLACE TRIGGER IIA_CTL_DAT_EPA
    AFTER INSERT ON EPA
    FOR EACH ROW
     
    DECLARE
      CURSOR CSR_DAT IS
      SELECT CMT, COD_FAM FROM FOU WHERE (COD_FOU = :NEW.COD_FOU);
     
      v_CMT FOU.CMT%TYPE;
      v_CMT_DAT DATE;
      v_COD_FAM FOU.COD_FAM%TYPE;
     
    BEGIN
      IF INSERTING THEN
        IF :NEW.TYP_PIE = 'CF' THEN
          OPEN CSR_DAT;
          FETCH CSR_DAT INTO v_CMT, v_COD_FAM;
          CLOSE CSR_DAT;
          IF v_COD_FAM IN ('LO', 'VR') THEN    
            v_CMT_DAT := TO_DATE(v_CMT, 'DD/MM/YYYY'); 
            IF (v_CMT_DAT < SYSDATE) THEN
              RAISE_APPLICATION_ERROR(-20800, 'La date de validité a expiré.');
            END IF;
          END IF;
        END IF;
      END IF;
     
    END;
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Peut-être en ajoutant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE TRIGGER xxx
    AFTER INSERT
    ON xxxxxxx
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    DECLARE
    ...

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    Merci mais le problème c'est que je ne suis pas sur iSQL PLUS, je suis dans la console oracle entreprise manager et je n'ai la possibilité que de coder le corps de mon trigger. c'est à dire: DECLARE .. END; (suis débutant).

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Et bien si vous ne pouvez pas éditer le corps du trigger, cela va être compliqué de changer quoi que ce soit...

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Et bien si vous ne pouvez pas éditer le corps du trigger, cela va être compliqué de changer quoi que ce soit...
    Non je m'étais trompé. Je viens de rajouter la référence "REFERENCING NEW AS NEW OLD AS OLD" et j'obtiens toujours la même erreur.

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    Non je m'étais trompé. Je viens de rajouter la référence "REFERENCING NEW AS NEW OLD AS OLD" et j'obtiens toujours la même erreur.

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pourrait-on voir la totalité des erreurs retournées ?

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Peut-être en ajoutant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE TRIGGER xxx
    AFTER INSERT
    ON xxxxxxx
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    DECLARE
    ...
    Ca servira à quoi d'ajouter la clause referencing ?

    The referencing_clause lets you specify correlation names. You can use correlation names in the PL/SQL block and WHEN condition of a row trigger to refer specifically to old and new values of the current row. The default correlation names are OLD and NEW. If your row trigger is associated with a table named OLD or NEW, use this clause to specify different correlation names to avoid confusion between the table name and the correlation name.


Discussions similaires

  1. probleme avec new->select a wizard
    Par thesorrow dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/03/2007, 09h00
  2. probleme avec le trigger STOCK
    Par madmax-mad dans le forum Oracle
    Réponses: 2
    Dernier message: 25/01/2007, 10h08
  3. probleme avec new listbox
    Par bubu92 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/11/2006, 17h33
  4. [JDBC]Probleme avec trigger Oracle
    Par aurel89 dans le forum JDBC
    Réponses: 2
    Dernier message: 02/08/2005, 11h53
  5. probleme avec : record "new" is not assigned yet D
    Par chtieu dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/03/2005, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo