2012-04-28 3 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

ответ

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

+0

@ user1362765: Говорить просто «не помогло» без каких-либо объяснений (вроде того, осталась ли проблема той же или, возможно, изменена на другую) тоже не очень полезно. @Marco: Я не являюсь человеком MySQL, поэтому мой вопрос может показаться глупым: сброс символа-разделителя инструкций по умолчанию ';' * всегда * необходим после определения подпрограммы (в случае, если вы изменили его ранее, конечно)? Другими словами, мне интересно, следует ли вам выдавать 'DELIMITER'' сразу после 'END $$' или нет (независимо от того, будут ли выполняться последующие инструкции). –

+0

@AndriyM: согласно руководству MySql нет (см. Пример (здесь) (http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html)), это необязательно. Но вы совершенно правы: OP не сказал нам ничего о том, почему это не помогло ... так что мы не можем ему помочь !! – Marco

0

Один дополнительной вариант для ваш клиент MySQL -

CREATE PROCEDURE catalog_get_departments_list() 
SELECT department_id, name FROM department ORDER BY department_id; 
Смежные вопросы

 Смежные вопросы