2012-04-28 218 views
0

有人告訴哪裏有錯誤?錯誤#1064 - 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊

CREATE PROCEDURE catalog_get_departments_list() 
BEGIN 
SELECT department_id, name FROM department ORDER BY department_id; 
END$$ 

而這個錯誤崩潰:

#1064 - 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 '' at line 3 
+3

「有人告訴哪裏有錯誤?」這只是一個錯誤,如果MySQL沒有按照它說的那樣做。語法錯誤不是一個錯誤,它是一個語法錯誤。 – Corbin 2012-04-28 11:01:12

回答

2

我想你應該在最後刪除美元:

CREATE PROCEDURE catalog_get_departments_list() 
BEGIN 
SELECT department_id, name FROM department ORDER BY department_id; 
END 

或設置分隔符

DELIMITER $$ 
CREATE PROCEDURE catalog_get_departments_list() 
BEGIN 
SELECT department_id, name FROM department ORDER BY department_id; 
END$$ 
+0

感謝您的回覆,但沒有幫助。 – user1362765 2012-04-28 11:15:14

+0

@ user1362765:沒有任何解釋就說「沒有幫助」(比如問題是否保持不變,或者更改爲另一個問題)也沒有什麼幫助。 @Marco:我不是一個真正的MySQL人,所以我的問題可能聽起來很愚蠢:在子例程定義之後(如果您以前更改過),將語句分隔符重置爲默認的';'* always *?換句話說,我想知道是否必須在'END $$'之後發出'DELIMITER;',否則(不管是否有更多的語句會隨之而來)。 – 2012-04-28 12:29:05

+0

@AndriyM:根據MySql手冊否(參見一些示例[這裏](http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html)),這是沒有必要的。但你完全正確:OP沒有告訴我們爲什麼它沒有幫助......所以我們不能真正幫助他! – Marco 2012-04-28 14:05:56

0

還有一個變種你的MySQL客戶端 -

CREATE PROCEDURE catalog_get_departments_list() 
SELECT department_id, name FROM department ORDER BY department_id; 
相關問題