2013-10-03 11 views
6

Próbuję wykonać procedura składowana z parametrami za pomocą mysql workbench do wstawiania danych do tabeli.wstawić do procedury przechowywanej z parametrami MySQL nie działa

co robię źle?

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 

błąd jest w ostatnim wierszu wartości po) on nie oczekuje;
pozdrowienia Jeroen

+0

Jaki jest komunikat o błędzie? –

Odpowiedz

8

Musisz zmienić separator, tak:

# 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

dzięki dzięki, że działa, , ale dlaczego tego potrzebuję? wat jest powodem? – Jeroen

+4

Domyślnie mysql sam rozpoznaje średnik jako ogranicznik instrukcji, więc musisz tymczasowo przedefiniować ogranicznik, aby spowodować przesłanie przez mysql całej zapisanej definicji programu na serwer. W przeciwnym razie, MySQL łamie CREATE PROCEDURE, zanim dotrze do instrukcji END. Możesz zobaczyć dokumentację, aby uzyskać więcej informacji: 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

dzięki za ten kod działa .... :) –

Powiązane problemy