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 :

Syntax error sur fonction max


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Par défaut Syntax error sur fonction max
    Bonjour,

    Voici le code que j'exécute en PL/PGSQL

    DECLARE
    valeur_max integer;

    BEGIN

    IF valeur_max IS NULL THEN

    SELECT max(val_entier) into valeur_max FROM instance_fiche inst, valeur_entier val WHERE inst.inst_id = val.inst_id AND val.champ_id IN (SELECT champ_id FROM champ WHERE champ_code = 'TATA');

    END IF;
    Je récupère l'erreur suivante lors de la compilation:
    ERROR: syntax error at or near "("
    LINE 1: SELECT $1 (val_entier) FROM instance_fiche inst, valeur_ent...
    Je ne vois pas à quoi cette erreur est due, d'autant que la requete s'exécute correctement lorsque je l'exécute:
    SELECT max(val_entier) FROM instance_fiche inst, valeur_entier val WHERE inst.inst_id = val.inst_id AND val.champ_id IN (SELECT champ_id FROM champ WHERE champ_code = 'TATA');

    ==> 200

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Je ne connais pas PostgreSQL mais ne faudrait-il pas des parenthèses ou des accolades entre le if then et le end if ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Par défaut
    Pas d'accolades en Postgre
    Le bloc d'instructions est défini entre le THEN et le END IF

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour,
    d'apres le message d'erreur on a l'impression que ta fonction a un parametre et que tu as rajoute une ligne
    declare max alias for $1;

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Par défaut
    max(COL)est la fonction standard Postgre qui renvoie la valeur maximum d'une colonne. Ce n'est donc pas une fonction à moi...

    Faut-il faire quelque chose de particulier ?

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    je suis d'accord, mais dans ta fonction est ce que tu n'as pas declaré une variable max

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Par défaut
    J'ai déclaré une variable valeur_max...

    Tu crois qu'il se mélange les pinceaux ?

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    dans l''entete de ta fonction est ce que tu n'aurais pas
    CREATE OR REPLACE FUNCTION ma_fonction( max integer)...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Par défaut
    Bien vu !!!!

    Merci, c'est nickel !!

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

Discussions similaires

  1. syntax error sur ma fonction
    Par darkwall_37 dans le forum Débuter
    Réponses: 14
    Dernier message: 30/04/2009, 09h03
  2. Réponses: 0
    Dernier message: 06/08/2008, 11h44
  3. Réponses: 7
    Dernier message: 18/03/2008, 17h58
  4. [SQL] SQL syntax error dans fonction insert into
    Par scarfesse dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/12/2007, 13h25
  5. Réponses: 17
    Dernier message: 13/03/2007, 15h31

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