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 :

PLS-00201: l'identificateur doit être déclaré


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Par défaut PLS-00201: l'identificateur doit être déclaré
    Bonjour
    J'essaie de créer un trigger qui envoie un email lorsque le compteur atteint la valeur souhaiter
    Ci joint le code
    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
    create or replace TRIGGER email
       AFTER UPDATE
       ON T_METER
       FOR EACH ROW
     
       DECLARE
       CURSOR NS
       IS
          SELECT EREQ_SERIAL_NUMBER, MDMT_DESCRIPTION
            FROM T_METER , T_EQUIPMENT
           WHERE PK_METER = MDMT_CUMULATIVE_UNITS
           AND ereq_code = MDMT_CODE;
     
       objet       VARCHAR2 (100 BYTE);
       MESSAGE     VARCHAR2 (500 BYTE);
       recipient   vest_tools.tablevarchar100;
    BEGIN
     
       IF MDMT_CUMULATIVE_UNITS >= MDMT_NUMBER3
       THEN
          objet := 'Fin de vie de l'' Adapter'|| MDMT_CODE;
     
          FOR vie IN NS
          LOOP
             MESSAGE :=
                   'L'' Adapter '
                || MDMT_DESCRIPTION
                || ' avec le numero de série '
                || EREQ_SERIAL_NUMBER
                || ' à attend son cycle de fin de vie ';
             MESSAGE :=
                   MESSAGE
                || CHR (10)
                || ' ---- NE PAS REPONDRE ---'
                || CHR (10)
                || '---- Mail  envoyé automatiquement par Coswin  ----';
    lors de l’exécution du tregger j'obtiens le message suivants:

    Erreur(22,4): PL/SQL: Statement ignored
    Erreur(22,7): PLS-00201: l'identificateur 'MDMT_CUMULATIVE_UNITS' doit être déclaré

  2. #2
    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
    Le message semble assez clair: il connait pas que-est ce MDMT_CUMULATIVE_UNITS.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Par défaut
    Comment peux-je le déclarer ?

    sachons que le champ MDMT_CUMULATIVE_UNITS est utilisable dans la table T_METER

  4. #4
    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
    Il y a un tutoriel PL/SQL sur ce site.

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Tu déclares un curseur mais tu ne l'utilises pas... où est le OPEN, le FETCH, le CLOSE?

    Il faudrait dans ton SELECT mettre les colonnes MDMT_CUMULATIVE_UNITS et MDMT_NUMBER3 et les stocker dans deux variables.

    En outre je te suggère fortement de préfixer tes variables par v_ pour une meilleure lisibilité, et, même mieux, v_var_ pour VARCHAR2.

    Je crois aussi que le code
    IF MDMT_CUMULATIVE_UNITS >= MDMT_NUMBER3
    devrait être remplacé par
    IF v_MDMT_CUMULATIVE_UNITS >= v_MDMT_NUMBER3

  6. #6
    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 Ikebukuro Voir le message
    ...
    En outre je te suggère fortement de préfixer tes variables par v_ pour une meilleure lisibilité, et, même mieux, v_var_ pour VARCHAR2.
    ...
    C'est loin d'être un bon conseil.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/09/2011, 12h04
  2. Réponses: 2
    Dernier message: 20/09/2007, 09h22
  3. Réponses: 3
    Dernier message: 26/02/2007, 15h02
  4. Réponses: 3
    Dernier message: 14/02/2007, 17h56
  5. Réponses: 2
    Dernier message: 12/12/2006, 09h48

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