简单 Mysql "insert" 存储过程将不起作用
Simple Mysql "insert" stored procedure won't work
我不能创建这个存储过程load/save,这很奇怪,因为该过程的插入一行版本没有问题。我并没有试图超载,我给了两个过程和所有变量不同的名称 workbench 告诉我问题在于 "flavidtwo" 之后的括号。颠倒插入的顺序并不能解决问题,它只是开始抱怨另一行的结尾。
CREATE PROCEDURE `LinkTwoFlavors`(in selzidtwo INT, in flavidone INT, in flavidtwo INT)
BEGIN
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidtwo);
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidone);
END
实际上,它抱怨的是分号,而不是括号。您需要在程序之前设置不同的 DELIMITER(之后再次重置),以便 mysql 知道将整个程序视为单个语句,否则它认为它应该在您的第一个 INSERT 语句之后结束。你的程序应该是这样的
DELIMITER //
CREATE PROCEDURE `LinkTwoFlavors`(in selzidtwo INT, in flavidone INT, in flavidtwo INT)
BEGIN
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidtwo);
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidone);
END //
DELIMITER ;
我不能创建这个存储过程load/save,这很奇怪,因为该过程的插入一行版本没有问题。我并没有试图超载,我给了两个过程和所有变量不同的名称 workbench 告诉我问题在于 "flavidtwo" 之后的括号。颠倒插入的顺序并不能解决问题,它只是开始抱怨另一行的结尾。
CREATE PROCEDURE `LinkTwoFlavors`(in selzidtwo INT, in flavidone INT, in flavidtwo INT)
BEGIN
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidtwo);
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidone);
END
实际上,它抱怨的是分号,而不是括号。您需要在程序之前设置不同的 DELIMITER(之后再次重置),以便 mysql 知道将整个程序视为单个语句,否则它认为它应该在您的第一个 INSERT 语句之后结束。你的程序应该是这样的
DELIMITER //
CREATE PROCEDURE `LinkTwoFlavors`(in selzidtwo INT, in flavidone INT, in flavidtwo INT)
BEGIN
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidtwo);
INSERT INTO `readinga_seltzer`.`AscSeltzerFlavor` (`SeltzerID`,`FlavorID`) VALUES (selzidtwo, flavidone);
END //
DELIMITER ;