mysql存储过程:在limit语句中使用声明的vars返回错误

ufk*_*ufk 1 mysql stored-procedures limit

我有以下代码:

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 ;
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

似乎我不能在LIMIT语句中使用声明的变量.还有其他方法可以克服这个问题吗?

当然这是一个简单的例子,在这里我可以放置静态数字,但我需要知道是否有可能以任何方式使用LIMIT的任何类型的变量.

谢谢

hex*_*mal 8

我使用类似的东西:

SET @s = CONCAT('SELECT * FROM table limit  ', vLoopOrder ', ', vLoopLimit); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;
Run Code Online (Sandbox Code Playgroud)