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 Procédural MySQL Discussion :

Erreur 1064 sur CREATE FUNCTION


Sujet :

SQL Procédural MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Erreur 1064 sur CREATE FUNCTION
    Bonjour,

    J'ai un pb lors de la création d'une fonction avec MySql :

    DELIMITER $$

    DROP FUNCTION IF EXISTS `base`.`nbEnfant`$$

    CREATE FUNCTION `base`.`nbEnfant`(in_id_membre LONG, in_id_type LONG, in_d_debut DATE, in_d_fin DATE)
    RETURNS LONG

    BEGIN
    RETURN (SELECT COUNT(ID_MEMBRE_ENFANT) AS TOTAL
    FROM `base`.`membre_enfant`
    WHERE ID_MEMBRE=in_id_membre AND
    TYPE_MEMBRE=in_id_type AND
    D_NAIS_MEMBRE_ENFANT BETWEEN in_d_debut AND in_d_fin)
    END$$

    DELIMITER ;

    J'obtiens systématiquement l'erreur :
    Script line: 5 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURN (SELECT COUNT(ID_MEMBRE_ENFANT) AS TOTAL
    FROM `base`.`membre_enfant`
    ' at line 5


    Quelqu'un a-t-il une idée de mon erreur ?

    Merci

  2. #2
    Membre éclairé Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Points : 786
    Points
    786
    Par défaut
    J'ai jamais essayé de retourner un select mais as tu essayé de la manière suivante :
    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
     
    DELIMITER $$
    DROP FUNCTION IF EXISTS `base`.`nbEnfant`$$
    CREATE FUNCTION `base`.`nbEnfant`(in_id_membre LONG, 
                                        in_id_type LONG, 
                                        in_d_debut DATE, 
                                        in_d_fin DATE)
    RETURNS LONG
     
    BEGIN
    DECLARE var_total INT;
    SELECT COUNT(ID_MEMBRE_ENFANT)
    INTO var_total
    FROM `base`.`membre_enfant`
    WHERE ID_MEMBRE=in_id_membre AND TYPE_MEMBRE=in_id_type AND
    D_NAIS_MEMBRE_ENFANT BETWEEN in_d_debut AND in_d_fin;
     
    RETURN var_total;
    END$$
    DELIMITER ;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Super, ça fonctionne !!

    Merci
    Franck

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

Discussions similaires

  1. Erreur de syntaxe sur Create Function
    Par olibara dans le forum Développement
    Réponses: 12
    Dernier message: 12/01/2015, 09h23
  2. La fameuse erreur 1064 sur un trigger
    Par Shinyo dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/11/2011, 16h37
  3. [XL-2003] Erreur 1004 sur worksheet function average
    Par JonSnow dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2010, 12h40
  4. Erreur 1064 sur "type=InnoDB"
    Par Jaxofun dans le forum MySQL
    Réponses: 2
    Dernier message: 10/06/2009, 13h56
  5. Erreur de syntaxe sur un CREATE FUNCTION
    Par hirochirak dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/07/2008, 14h25

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