2010-11-30 9 views
0

を返します:MySQLは次のエラーを返すmysqlのストアドプロシージャ:リミット文で宣言したVARSを使用して、私は次のコードを持っているエラー

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 ; 

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 

を私が宣言を使用することはできませんようですLIMITステートメントの変数これを克服する他の方法はありますか?

これは簡単な例ですが、ここでは静的な数値を入れることができますが、何らかの変数をLIMITで使用できるかどうかを知る必要があります。

おかげ

答えて

7

私が好きなものを使用します。

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

は良い方法のように見えます。ありがとう – ufk

関連する問題