带参数MYSQL的insert into in存储过程无效

带参数MYSQL的insert into in存储过程无效,mysql,stored-procedures,parameters,sql-insert,Mysql,Stored Procedures,Parameters,Sql Insert,我正在尝试使用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 tussen

我正在尝试使用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,您需要更改分隔符,如下所示:

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

错误消息是什么?哦,谢谢,现在它可以工作了,但是为什么我需要它?原因是什么?默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以使mysql将整个存储程序定义传递给服务器。否则,MySQL会在到达END语句之前中断CREATE过程。有关更多详细信息,请参见文档:
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')