我有以下代码:
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的任何类型的变量.
谢谢
解决方法:
我使用类似的东西:
SET @s = CONCAT('SELECT * FROM table limit ', vLoopOrder ', ', vLoopLimit);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
标签:mysql,stored-procedures,limit
来源: https://codeday.me/bug/20191007/1867493.html