2013-10-03 2 views
6

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

что я делаю неправильно ??

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

+0

Что такое сообщение об ошибке? –

ответ

8

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

# 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 ; 
+0

ow Спасибо, теперь это работает, , но зачем мне это нужно? Ват - причина? – Jeroen

+4

По умолчанию mysql сам распознает точку с запятой как разделитель инструкций, поэтому вы должны переопределить разделитель временно, чтобы заставить mysql передать все хранимое определение программы на сервер. В противном случае MySQL нарушает CREATE PROCEDURE, прежде чем он достигнет инструкции END. Документацию можно посмотреть: http://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html – Zagor23

2
DELIMITER $$ 
DROP PROCEDURE IF EXISTS `database_name`.`ins`$$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `ins`(in nam varchar(50),in username varchar(50), in branch varchar(50)) 
BEGIN 
insert into table_name(nam,user_name,branch) values(nam,username,branch); 
    END$$ 
DELIMITER ; 

call ins('sas','sdsd','sdsd') 
+0

спасибо за этот код работоспособный .... :) –

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