2015-09-30 4 views
0

Я пытаюсь создать очень основную хранимую процедуру в MySQL. Он должен увеличивать значение int в таблице. Я также хочу, чтобы хранимая процедура была удалена, если она уже существует. Sql внутри хранимой процедуры отлично работает по отдельности.Синтаксис хранимой процедуры MySQL

Я получаю эту ошибку:

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 'END' at line 5

я пытался:

DELIMITER $$ 
DROP PROCEDURE IF EXISTS sp_version_increment$$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @ver = (SELECT version FROM version LIMIT 1) + 1; 
    UPDATE version SET version = @ver 
END$$ 
DELIMITER 


DELIMITER $$ 
DROP PROCEDURE IF EXISTS sp_version_increment$$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @ver = (SELECT version FROM version LIMIT 1) + 1; 
    UPDATE version SET version = @ver 
END 

РЕШЕНИЕ:

DELIMITER $$ 
DROP PROCEDURE IF EXISTS sp_version_increment$$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @num = (SELECT number FROM version LIMIT 1) + 1; 
    UPDATE version SET number = @num; 
END 

ответ

0

Я нашел ответ сам:

DELIMITER $$ 
DROP PROCEDURE IF EXISTS sp_version_increment$$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @num = (SELECT number FROM version LIMIT 1) + 1; 
    UPDATE version SET number = @num; 
END 

Я до сих пор понятия не имею, почему он Wouldnt принимать другие запросы, которые я сделал, так что если кто-нибудь может сэкономить несколько слов на эту тему, я буду рад :)

0

Тест

DROP PROCEDURE IF EXISTS sp_version_increment; 
DELIMITER $$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @ver = (SELECT version FROM version LIMIT 1) + 1; 
    UPDATE version SET version = @ver; 
END $$ 
DELIMITER ; 

DROP PROCEDURE IF EXISTS sp_version_increment; 
DELIMITER $$ 
CREATE PROCEDURE `sp_version_increment`() 
BEGIN 
    SET @ver = (SELECT version FROM version LIMIT 1) + 1; 
    UPDATE version SET version = @ver; 
END $$ 
DELIMITER ; 
+0

Думаю, мне просто нужен один из них. Те, что я написал выше, где только две отдельные попытки, которые потерпели неудачу. Я попробую ваше предложение сразу –

+0

Выполнение этого дает мне эту ошибку: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «DELIMITER» по строке 6 –

+0

. Повторите попытку. Я редактировал свой код, и он может создать процедуру i test на Mysql Workbench –

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