插入到带有参数的存储过程中 MYSQL 不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19158299/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
insert into in stored procedure with parameters MYSQL doesnt work
提问by Jeroen
i am trying to make a stored procedure with parameters using mysql workbench to insert data into a table.
我正在尝试使用 mysql 工作台创建一个带有参数的存储过程,以将数据插入表中。
what am i doing wrong??
我究竟做错了什么??
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
the error is in the last row of the values after ) he doesnt expect a ;
regards Jeroen
错误出现在 ) 之后的最后一行值中,他不希望出现 ;
问候 Jeroen
回答by Zagor23
You need to change the delimiter, like this:
您需要更改分隔符,如下所示:
# 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 ;
回答by Chidananda N C
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')