Stored procedures 存储过程中MySQL子查询中的整数

Stored procedures 存储过程中MySQL子查询中的整数,stored-procedures,mysql,Stored Procedures,Mysql,我做了一个简单的程序只是为了演示 CREATE PROCEDURE `demo`(demo_int int) BEGIN DECLARE minid INT; SELECT min(id) FROM (SELECT id FROM events LIMIT demo_int,9999999999999999) as hoo INTO minid; END$$ 问题在于demo_int,如果我将其更改为 LIMIT 1,9999999999999999 它有效,但是 LIMIT demo

我做了一个简单的程序只是为了演示

 CREATE PROCEDURE `demo`(demo_int int)
BEGIN
 DECLARE minid INT;
 SELECT min(id) FROM (SELECT id FROM events LIMIT demo_int,9999999999999999) as hoo INTO minid;
END$$
问题在于demo_int,如果我将其更改为

LIMIT 1,9999999999999999
它有效,但是

LIMIT demo_int,9999999999999999
不。。。 这是错误的

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 'demo_int,9999999999999999) as hoo INTO minid; END' at line 4 (errno: 1064)
有什么线索吗?

问题在于(无论是bug还是特性都是有争议的问题)您不能将该参数与LIMIT语句一起使用。LIMIT语句采用整数常量,这种情况下的关键点是它们必须是常量而不是变量


有关提交的错误报告,请参见,有关使用准备好的语句的可能解决方法,请参见

但是为什么??????????嗯…准备好了吗。。。感谢上帝,我正在使用MySQL 5.1>