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

Oracle Discussion :

TRIGGER Erreur PLS-00357


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut TRIGGER Erreur PLS-00357
    Bonjour,
    je suis en train de développer un TRIGGER et je suis confronté à une erreur que je ne comprends pas.
    Voici le code du Trigger avec en rouge où apparement se trouve l'erreur :
    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
    CREATE OR REPLACE TRIGGER fermeture_of
    AFTER UPDATE OF date_fin_operation ON operation
    FOR EACH ROW
    WHEN (NEW.id_poste=4)
    DECLARE
     CURSOR c (d integer) IS
      SELECT qte_realisee, qte_a_realiser FROM concerne
      WHERE numero_demande=d;
     realisee INTEGER;
     a_realiser INTEGER;
     no_demande INTEGER;
     part INTEGER;
    BEGIN
     SELECT qte_realisee, qte_a_realiser, c.numero_demande, c.partnumber
     INTO realisee, a_realiser, no_demande, part
     FROM demande d, cycle_ventilateur v, operation o, concerne c
     WHERE v.numero_serie_trane=:NEW.numero_serie_trane
     AND d.numero_demande=v.numero_demande
     AND d.numero_demande=c.numero_demande
     AND v.partnumber=c.partnumber;
     UPDATE concerne SET qte_realisee=qte_realisee + 1
     WHERE numero_demande=no_demande
     AND partnumber=part;
     FOR d IN c(demande) LOOP
      IF d.qte_realisee!=d.qte_a_realiser THEN
       GOTO fin;
      END IF;
     END LOOP;
     UPDATE demande SET statut_demande='F'
     WHERE numero_demande=no_demande;
     <<fin>>
     NULL;
    END;
    Et l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    22/2     PL/SQL: Statement ignored
    22/13    PLS-00357: Table,View Or Sequence reference 'DEMANDE' not allowed
             in this context
    Merci d'avance pour vos réponses

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Est-ce que l'erreur n'est plutôt au-dessus ?

    FOR d IN c(demande) LOOP
    Je crois que vous utilisez un nom de table en paramètre d'un curseur ...

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    En plus vous faites un select sur la table operation, vous allez avoir l'erreur de la table mutante

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par pifor
    Est-ce que l'erreur n'est plutôt au-dessus ?

    Je crois que vous utilisez un nom de table en paramètre d'un curseur ...
    Oui CT ça, j'avais oublié de changer le nom de la variable que j'avais renommée no_demande.
    Merci beaucoup

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par plaineR
    En plus vous faites un select sur la table operation, vous allez avoir l'erreur de la table mutante
    En effet, il y a une erreur de table mutante, c'est quoi ce bordel??? ;-)

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Voici plus d'infos sur la table mutante
    http://sgbd.developpez.com/oracle/ora-04091/

    Dans ton cas, pourquoi fais tu une jointure sur la table operation ? Ne peux-tu pas utiliser les variables :new.colxxx ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par plaineR
    Voici plus d'infos sur la table mutante
    http://sgbd.developpez.com/oracle/ora-04091/

    Dans ton cas, pourquoi fais tu une jointure sur la table operation ? Ne peux-tu pas utiliser les variables :new.colxxx ?
    En fait, j'utilisais :new.colXXX, mais j'avais oublié de virer la table operation de la clasue FROM...

    Que des erreurs bêtes en fait... lol

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] Erreur PLS-00103 dans un trigger
    Par sami.g dans le forum Oracle
    Réponses: 1
    Dernier message: 18/12/2006, 18h57
  2. Réponses: 4
    Dernier message: 23/05/2006, 18h04
  3. [10g] Trigger erreur de compilation
    Par flasomm dans le forum Oracle
    Réponses: 2
    Dernier message: 03/01/2006, 04h07
  4. [Debug] [Trigger] erreur d'exe pas très précise
    Par viena dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2005, 12h36
  5. fonction LAG et erreur PLS-00103. Oracle 8i
    Par henrirobert dans le forum Oracle
    Réponses: 7
    Dernier message: 26/05/2005, 17h03

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