Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2007, 00h36   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 3
Points : 2
Points : 2
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
Franck_Pal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 08h16   #2
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
J'ai jamais essayé de retourner un select mais as tu essayé de la manière suivante :
Code :
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 ;
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 09h19   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 3
Points : 2
Points : 2
Super, ça fonctionne !!

Merci
Franck
Franck_Pal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h59.


 
 
 
 
Partenaires

Hébergement Web