2010-11-30 30 views
0

我有以下代碼:MySQL的存儲過程:在限制語句中使用聲明瓦爾返回一個錯誤

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返回以下錯誤:

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 2010-11-30 18:34:38