вставить в хранимую процедуру с параметрами MYSQL не работает

Я пытаюсь создать хранимую процедуру с параметрами, используя mysql workbench для вставки данных в таблицу.

Что я делаю не так??

    USE deb42181_ramos;
CREATE PROCEDURE sp_insertuser(IN gebruikersnaamparam varchar(10)
, IN wachtwoordparam VARCHAR(50)
, IN voornaamparam VARCHAR(15)
, IN achternaamparam VARCHAR(15)
, IN tussenvoegselparam VARCHAR(10)
, IN gebruikerlevelparam INT)
BEGIN

INSERT INTO gebruikers (
gebruikersnaam
, wachtwoord
, voornaam
, achternaam
, tussenvoegsel
, gebruikerlevel)

    VALUES (gebruikersnaamparam
    , wachtwoordparam
    , voornaamparam
    , achternaamparam
    , tussenvoegselparam
    , gebruikerlevelparam);

END

ошибка находится в последней строке значений после ) он не ожидает ;
с уважением Jeroen


person Jeroen    schedule 03.10.2013    source источник
comment
Что такое сообщение об ошибке?   -  person Sashi Kant    schedule 03.10.2013


Ответы (1)


Вам нужно изменить разделитель, например:

# change the delimiter to $$, so you can use semicolon in create procedure
DELIMITER $$

USE deb42181_ramos$$

DROP PROCEDURE IF EXISTS sp_insertuser$$

CREATE PROCEDURE sp_insertuser(IN gebruikersnaamparam varchar(10)
, IN wachtwoordparam VARCHAR(50)
, IN voornaamparam VARCHAR(15)
, IN achternaamparam VARCHAR(15)
, IN tussenvoegselparam VARCHAR(10)
, IN gebruikerlevelparam INT)
BEGIN

INSERT INTO gebruikers (
gebruikersnaam
, wachtwoord
, voornaam
, achternaam
, tussenvoegsel
, gebruikerlevel)

    VALUES (gebruikersnaamparam
    , wachtwoordparam
    , voornaamparam
    , achternaamparam
    , tussenvoegselparam
    , gebruikerlevelparam);

END$$
# change the delimiter back to semicolon
DELIMITER ;
person Zagor23    schedule 03.10.2013
comment
ой, спасибо, теперь все работает, но зачем мне это? в чем причина? - person Jeroen; 03.10.2013
comment
По умолчанию сам mysql распознает точку с запятой как разделитель операторов, поэтому вы должны временно переопределить разделитель, чтобы mysql передал на сервер все сохраненное определение программы. В противном случае MySQL прерывает CREATE PROCEDURE до того, как достигнет оператора END. Более подробную информацию можно найти в документации: dev.mysql .com/doc/refman/5.5/en/stored-programs-defining.html - person Zagor23; 03.10.2013