хранимая процедура mysql: использование объявленных переменных в инструкции limit возвращает ошибку - PullRequest
1 голос
/ 30 ноября 2010

У меня есть следующий код:

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.

Спасибо

1 Ответ

8 голосов
/ 30 ноября 2010

я использую что-то вроде:

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