2010-05-07 59 views
2

我做了简单的程序只是为了演示整数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_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) 

任何线索?

回答

2

问题(无论是错误还是功能都是一个有争议的问题)是您不能在LIMIT语句中使用该参数。 LIMIT语句采用整数常量,这种情况下的关键点是它们必须是常量,而不是变量

here了提交错误报告,并here一个可能的解决方法,其中包括使用准备好的语句。

+0

但是为什么??????????呵呵......用准备好的语句完成......感谢上帝,我使用MySQL 5.1> – confiq 2010-05-07 15:13:15