2010-11-30 33 views
0

je le code suivant:mysql procédure stockée: en utilisant vars déclaré dans un communiqué limite renvoie une erreur

delimiter ; 

DROP PROCEDURE IF EXISTS ufk_test; 
delimiter // 
CREATE PROCEDURE ufk_test(IN highscoreChallengeId INT UNSIGNED) 
BEGIN 
DECLARE vLoopOrder INT UNSIGNED DEFAULT 5; 
DECLARE vLoopLimit INT UNSIGNED DEFAULT 10; 
select * from fb_user LIMIT vLoopOrder,vLoopLimit; 
END// 

delimiter ; 

Mysql renvoie l'erreur suivante:

ERROR 1064 (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 'vLoopOrder,vLoopLimit; 
END' at line 11 

il semble que je ne peux pas utiliser déclarée variables dans une instruction LIMIT. Y a-t-il un autre moyen de surmonter cela?

bien sûr c'est un exemple simple, ici je pourrais juste mettre des nombres statiques mais j'ai besoin de savoir s'il est possible d'utiliser n'importe quel type de variables avec LIMIT.

Merci

Répondre

7

-je utiliser quelque chose comme:

SET @s = CONCAT('SELECT * FROM table limit ', vLoopOrder ', ', vLoopLimit); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
+0

ressemble à une bonne méthode. Merci – ufk