2010-05-07 64 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