J'ai une procédure que j'ai testé et qui fonctionne correctement (le DELIMITER est fixé à "|") :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE PROCEDURE concatarray(IN f INT,OUT modos VARCHAR(255))
BEGIN
SELECT GROUP_CONCAT(DISTINCT username SEPARATOR ',') AS modos FROM fforums,users WHERE forum_id=f AND FIND_IN_SET(user_id,moderateurs);
END
|
Plutôt que de faire une fonction qui l'appelle j'aimerais la transformer en une fonction pour l'appeler dans un SELECT mais, quoique je fasse, j'ai une erreur dès le CREATE FUNCTION
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
CREATE FUNCTION concatarray(f INT) RETURNS VARCHAR(255)
DECLARE modos VARCHAR(255);
DECLARE cur1 CURSOR FOR SELECT GROUP_CONCAT(DISTINCT username SEPARATOR ',') AS modos FROM fforums,users WHERE forum_id=f AND FIND_IN_SET(user_id,moderateurs);
BEGIN
OPEN cur1;
FETCH cur1 INTO modos;
RETURN modos;
END
|
Erreur :
ERROR 1864 (42000): 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 'DECLARE cur1 CURSOR FOR SELECT GROUP_CONCAT(DISTINCT username SEPARATOR ',') AS ' at ligne 1

J'ai essayé sans le DECLARE modos... et j'ai la même erreur.