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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    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 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
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    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 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 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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    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
    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
    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
    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 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