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

SQL Oracle Discussion :

erreur de compilation


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut erreur de compilation
    bonjour a tous

    voila j'ai un probleme avec la creation du trigger
    j'ai fait ce trigger sur un base oracle 10 XE que je faisait tourner en local

    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
     
    CREATE OR REPLACE TRIGGER  NEGOCEX32.PLANIF_IU 
    AFTER 
    insert or update on NEGOCEX32.XPLANBPE 
    for each row
     
    DECLARE 
     
    date_up VARCHAR2(8);
    Anomalie EXCEPTION; 
     
    begin 
     
    SELECT SDATE_0 INTO date_up FROM NEGOCEX32.XSESSION WHERE SDATE_0 = :NEW.DATEPLAN_0;
     
    IF date_up = '' THEN 
     
    	RAISE Anomalie;
     
    ELSE
     
    	UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = date_up;
     
    END IF;
     
    EXCEPTION 
     
    WHEN Anomalie THEN 
     
    	INSERT INTO NEGOCEX32.XSESSION 
    	(STYPE_0,STIMESTAMP_0,SDATE_0) 
    	VALUES 
    	('PLANIF',CURRENT_TIMESTAMP,:NEW.DATEPLAN_0);
     
    WHEN OTHERS THEN 
     
    	INSERT INTO NEGOCEX32.XSESSION 
    	(STYPE_0,STIMESTAMP_0,SDATE_0) 
    	VALUES 
    	('PLANIF',CURRENT_TIMESTAMP,:NEW.DATEPLAN_0);
     
    end;
    /

    ça marchait impec et maintenant je la test sur oracle 8i
    et il me met " trigger créé avec des erreurs de compilation "

    merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    question bête :
    Est-ce que le schéma NEGOCEX32 existe et as-tu les bons droits dessus ?

  3. #3
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Mais au niveau logique c’est tellement fort :
    • Soit SDATE_0 est égal :NEW.DATEPLAN_0 et donc date_up est égal à :NEW.DATEPLAN_0
    • Soit SDATE_0 est différente de :NEW.DATEPLAN_0 et après le select into ça va aller dans le bloc d’exception.


    Mais le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IF date_up = '' THEN 
     
    	RAISE Anomalie;
    est complément inutile.

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Points : 211
    Points
    211
    Par défaut
    Et si tu faisais ca, ca serait plus logique, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE TRIGGER  NEGOCEX32.PLANIF_IU 
    AFTER 
    insert or update on NEGOCEX32.XPLANBPE 
    for each row
     
    DECLARE 
    Anomalie EXCEPTION; 
    begin 
    UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = :NEW.DATEPLAN_0;
     
    ...
    Je ne vois pas l'utilité de ta variable date_up...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut merci pour vos reponses
    ok ok je suis d'accord sur la logique ya des trucks qui serve a rien mais le pb etait plus de l'ordre de la syntaxe je met la modif avec la syntaxe qui marche sous 8i on sais jamais :

    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
     
    CREATE OR REPLACE TRIGGER NEGOCEX32.PLANIF_IU 
    AFTER 
    insert or update on NEGOCEX32.XPLANBPE 
    for each row 
     
    DECLARE 
     
    date_up VARCHAR2(8);
    Anomalie EXCEPTION; 
    requete_update VARCHAR2(250);
     
    begin 
     
     
    EXECUTE IMMEDIATE 
    'SELECT SDATE_0 FROM NEGOCEX32.XSESSION WHERE SDATE_0 = :NEW.DATEPLAN_0
    ' INTO date_up;
     
    IF date_up = '' THEN 
     
    	RAISE Anomalie;
     
    ELSE
     
    requete_update:= 'UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = '||date_up;
     
    EXECUTE IMMEDIATE requete_update;
     
    END IF;
     
    EXCEPTION 
     
    WHEN Anomalie THEN 
     
    EXECUTE IMMEDIATE '
      INSERT INTO NEGOCEX32.XSESSION 
      (STYPE_0,SDATE_0,STIMESTAMP_0) 
      VALUES 
      ("PLANIF",:NEW.DATEPLAN_0,CURRENT_TIMESTAMP);
    ';
     
    WHEN OTHERS THEN 
     
    EXECUTE IMMEDIATE '
      INSERT INTO NEGOCEX32.XSESSION 
      (STYPE_0,SDATE_0,STIMESTAMP_0) 
      VALUES 
      ("PLANIF",:NEW.DATEPLAN_0,CURRENT_TIMESTAMP);
    ';
     
    end;
    /
    je debute en PL/SQL donc ce trigger est un ramassi de bout de code je confirme

  6. #6
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par highs Voir le message
    ...mais le pb etait plus de l'ordre de la syntaxe je met la modif avec la syntaxe qui marche sous 8i on sais jamais :

    ...
    Non merci.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut exxpllddrr nmitu
    plus que 2250 messages aussi vide que cela et tu passera expert senior confirmé !!

    faut pas prendre la grosse tête dans la vie cher ami , j'ai moi aussi mes languages de prédilection dans lequels je me débrouille plus bien et quand je vois les conneries que les autres ecrivent j'essai de les aider en me rapellant de mes debuts difficile comme nous tous ici !!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    mnitu n'a donc pas tout à fait tord, la réponse à un code personnel juste pour corriger des erreurs de syntaxe n'a aucun intérêt c'est bien pour ça que les règles interdisent l'usage du forum juste pour des problèmes de syntaxe

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut certe
    mais est-ce que l'on peut considérer qu'il y a une différence entre des erreurs de syntaxe pure et des pb que j'apellerai ' ecriture ' ?? pour moi c'est une peu comme une fonction qu'on utilise dans une version de language et qui serait déprécié dans une version supérieur !!!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    en tout cas, le minimum aurait été de fournir les erreurs en question... la commande SHOW ERR étant largement rappelée dans ce forum

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut ok ok merci pour tout qd même
    tu viens de m'apprendre le SHOW ERR que je ne connaissait pas !! bon je suis un peu parti au quart de tour mais bon aprés une journée de galéres dans un language que je connais pas ! c'est vrai que l'on peut être un poil irritable
    ( genre t'as envie de bouffer le bureau )
    désolé !!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Pas de problème

  13. #13
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par highs Voir le message
    plus que 2250 messages aussi vide que cela et tu passera expert senior confirmé !!

    faut pas prendre la grosse tête dans la vie cher ami , j'ai moi aussi mes languages de prédilection dans lequels je me débrouille plus bien et quand je vois les conneries que les autres ecrivent j'essai de les aider en me rapellant de mes debuts difficile comme nous tous ici !!!
    Cher Monsieur Highs,
    Ce n’est pas le nombre des étoiles affichées qui confère un statut d’expert.
    Mon message a un but précis : celui de signaler que, en fait, tu n’a pas trouve la solution. Sinon des âmes sensibles peuvent penser que il suffit de transformer les requêtes qui ne compilent pas en chaînes de caractères pour les exécuter en dynamique pour résoudre le problème.
    Voilà en espérant que maintenant les choses sont claires je te souhaite bon courage pour la suite.

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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