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

0

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

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.

Спасибо

Теги:
stored-procedures
limit

1 ответ

7
Лучший ответ

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

SET @s = CONCAT('SELECT * FROM table limit  ', vLoopOrder ', ', vLoopLimit); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;
  • 0
    выглядит как хороший метод. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню