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

PostgreSQL Discussion :

ERREUR: erreur de syntaxe


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut ERREUR: erreur de syntaxe
    Dans la table « Appartenance » lier A, B, C et D au carré et les autres points au rectangle.
    J'ai écris un déclencheur qui indique que la valeur saisie est incorrecte lorsque l’on insère un point qui
    existe déjà dans la table (parce qu’un point ne peut appartenir qu’à une seule figure).

    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
    CREATE OR REPLACE FUNCTION public.verif_appartenance()
     RETURNS trigger AS
    $BODY$
    BEGIN
        DECLARE existedeja INTEGER;  
     
     
        SELECT EXISTS( SELECT * 
          FROM Appartenance
          WHERE labelPoint = NEW.labelPoint
        ) INTO existedeja;
     
     
     
        IF existedeja THEN
            erreur('impossible, Point déjà pris!')
        END IF;
    END;
    $BODY$
      LANGUAGE plpgsql
        COST 100;
    ALTER FUNCTION public.verif_appartenance()
      OWNER TO postgres;
     
     
    CREATE TRIGGER verif_appartenance
    BEFORE INSERT ON Appartenance      
    FOR EACH ROW
    EXECUTE PROCEDURE verif_appartenance()
    Il me retourne un message d'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
    ERREUR:  erreur de syntaxe sur ou près de « EXISTS »
    LINE 8:     SELECT EXISTS( SELECT * 
                       ^
    CONTEXT:  nom de type « EXISTS( SELECT * 
          FROM Appartenance
          WHERE labelPoint  » invalide
    ********** Erreur **********
     
    ERREUR: erreur de syntaxe sur ou près de « EXISTS »
    État SQL :42601
    Caractère : 146
    Contexte : nom de type « EXISTS( SELECT * 
          FROM Appartenance
          WHERE labelPoint  » invalide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT CASE                        
          WHEN EXISTS                  
              (SELECT 1 FROM Appartenance
               WHERE labelPoint = NEW.labelPoint)   
          THEN 1                       
          ELSE 0                       
          END AS TEST1

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    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
    CREATE OR REPLACE FUNCTION public.verif_appartenance()
     RETURNS trigger AS
     
    BEGIN
        SELECT CASE                        
          WHEN EXISTS                  
              (SELECT 1 FROM Appartenance
               WHERE labelPoint = NEW.labelPoint)   
          THEN 1                       
          ELSE 0                       
          END AS TEST1
     
      LANGUAGE plpgsql
        COST 100;
    ALTER FUNCTION public.verif_appartenance()
      OWNER TO postgres;
     
     
    CREATE TRIGGER verif_appartenance
    BEFORE INSERT ON Appartenance      
    FOR EACH ROW
    EXECUTE PROCEDURE verif_appartenance()
    Erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ERREUR:  erreur de syntaxe sur ou près de « BEGIN »
    LINE 4: BEGIN
            ^
    ********** Erreur **********
     
    ERREUR: erreur de syntaxe sur ou près de « BEGIN »
    État SQL :42601
    Caractère : 77

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    La ce n'est pas la requête qui vous pose problème mais la syntaxe de création de la fonction
    Je ne suis pas expert en fonction mais il me semble que la chaine de caractères (séparée par des $ ou des quotes) est obligatoire après "RETURNS xxxx AS" et avant le bloc BEGIN ...END

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    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
    CREATE OR REPLACE FUNCTION public.verif_appartenance()
     RETURNS trigger AS
     $BODY$
     
    BEGIN 
        SELECT CASE                        
          WHEN EXISTS                  
              (SELECT 1 FROM Appartenance
               WHERE labelPoint = NEW.labelPoint)   
          THEN 1                       
          ELSE 0                       
          END  
         $BODY$
     
      LANGUAGE plpgsql VOLATILE
      COST 100;
     
     
    ALTER FUNCTION public.verif_appartenance()
      OWNER TO postgres;
     
     
    CREATE TRIGGER verif_appartenance
    BEFORE INSERT ON Appartenance      
    FOR EACH ROW
    EXECUTE PROCEDURE verif_appartenance();
    Erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ERREUR:  définition inattendue de la fin de fonction à la fin de l'entrée
    LINE 13:      $BODY$
                  ^
     
    ********** Erreur **********
     
    ERREUR: définition inattendue de la fin de fonction à la fin de l'entrée
    État SQL :42601
    Caractère : 345

Discussions similaires

  1. Erreur "erreur de syntaxe dans la clause from"
    Par laaroussi1 dans le forum Accès aux données
    Réponses: 10
    Dernier message: 18/07/2011, 20h55
  2. [MySQL] Erreur sur une syntaxe echo.
    Par Velkan.nexus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/05/2008, 16h56
  3. Réponses: 1
    Dernier message: 15/06/2007, 02h23
  4. ou est l'erreur dans cette syntaxe svp ?
    Par delavega dans le forum ASP
    Réponses: 2
    Dernier message: 29/05/2007, 13h03
  5. Erreur 3061 - pb syntaxe?
    Par SylvainJ dans le forum Access
    Réponses: 3
    Dernier message: 13/07/2006, 14h14

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