stored-procedures - mysql存储过程: using declared vars in a limit statement returns an error

标签 stored-procedures mysql 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 ;

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/

相关文章:

mysql - 我们可以在Mysql的存储过程中写一个存储函数吗

mysql - 使用连接的多对多关系

mysql - 检索一个表的相同列以获取另一个表中的 2 个不同列

mysql - 最后 5 条记录 MYSQL 按 ID 排序

mysql按组限制记录加上内联多个表

MySQL存储过程where子句不过滤记录

mysql 存储过程与 mysql 命令行工具的脚本

C# MYSQL 在另一个 DataTable 中找到 DataTable.PrimaryKey?

没有 LIMIT 的 MySQL SELECT 查询

sql-server - SQL Server 存储过程初学者指南