我有以下代码:
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;
关于stored-procedures - mysql存储过程: using declared vars in a limit statement returns an error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315619/