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 27/02/2007, 23h18   #1
Membre du Club
 
Inscription : juillet 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 84
Points : 40
Points : 40
Par défaut [PROCEDURES STOCKEES] Erreur de syntaxe

Voila j'essaye de résoudre un problème que j'expose dans le post :
http://www.developpez.net/forums/sho...d.php?t=287108

J'ai créé une procédure stockée, mais je ne connais pas très bien et j'ai donc une erreur de syntaxe. Quelqu'un aurait il une idée d'ou se situe l'erreur?
La procédure est la suivante :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE OR REPLACE FUNCTION nombre_palette () RETURNS SETOF RECORD AS $$
         DECLARE
           res RECORD;
           res2 RECORD;
         BEGIN
           FOR loc IN
             SELECT `m_idtypepalette` , SUM( `m_g_nbpalette` ) AS sumPalEntrees
             FROM `m_gestionpalettecouvercle` WHERE `m_g_entreesortie` = 1
             GROUP BY `m_idtypepalette`
           LOOP
             SELECT `m_idtypepalette` , SUM( `m_g_nbpalette` ) + loc1.sumPalEntrees
             FROM `m_gestionpalettecouvercle`
             WHERE `m_g_entreesortie` = 0 AND `m_idtypepalette` = loc.sumPalEntrees
             GROUP BY `m_idtypepalette`
             RETURN NEXT res2;
           END LOOP;
           RETURN;
         END;
Je me suis inspirée d'une procédures stockées que j'ai trouvée. L'erreur renvoyée ne m'aide pas beaucoup :
Citation:
#1064 - 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 'FUNCTION nombre_palette () RETURNS SETOF RECORD AS $$
DECLARE
' at line 1
__________________
________________________________________
Evitez les pavés de codes! C'est dur et chiant à lire!
Pensez aux clostro!
Lambrosx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 23h45   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
À première vue, on dirait une fonction pour PostgreSQL. La syntaxe n'est pas la même sous MySQL. Et les possibilitées offertes par les routines stockées sous PgSQL sont bien plus grandes que sous MySQL.

Il y a déjà un problème pour toi : les fonctions sous MySQL ne peuvent retourner que des valeurs scalaires (entiers, chaînes, etc.).

Edit : mais tu n'as besoin de définir une fonction pour faire ce que tu cherches. Va voir la solution que je te propose ici.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h45   #3
Membre du Club
 
Inscription : juillet 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 84
Points : 40
Points : 40
On ne peut rien te cacher, ca vient d'une procédure sous Postegre.
J'espèrais que ca passerait.
Il n'aime peut être pas que je renvois le type record.
Comme tu m'as débloqué je ne cherche pas plus.
Merci de m'avoir aidé!
__________________
________________________________________
Evitez les pavés de codes! C'est dur et chiant à lire!
Pensez aux clostro!
Lambrosx 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 18h32.


 
 
 
 
Partenaires

Hébergement Web