gpt4 book ai didi

mysql - MySQL 中存储过程的奇怪问题

转载 作者:行者123 更新时间:2023-11-29 00:46:20 25 4
gpt4 key购买 nike

我需要在我们公司的MySQL服务器上添加一个新的存储过程。因为它只是略有不同,所以我使用了一个已经存在的,添加了额外的字段并更改了过程的名称。现在奇怪的是,当我想执行语句时,它返回:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

引用此行中的 0:SET @update_id := 0;奇怪的是,我使用 SHOW CREATE PROCEDURE 查询了该存储过程。它保存在我们的数据库中并且工作正常。我只是不能将它用作新的存储过程(无论我是尝试将它应用于新的测试数据库,还是通过给它一个新名称来在现有数据库上使用它)。我在互联网上搜索了解决方案。可惜无济于事。我什至用新表和一些演示值设置了一个新数据库,我试图在其中执行原始的、未更改的存储过程。它返回完全相同的错误。

这是我正在谈论的当前使用和工作的存储过程:

CREATE DEFINER=`root`@`localhost` PROCEDURE `customer_getcard`(IN Iinstance INT, IN Itimebuy DOUBLE, IN Iprice DECIMAL(10,2), IN Itariff INT, IN Icomment VARCHAR(128))
BEGIN
SET @update_id := 0;
UPDATE customer_shop SET state = 1, id = (SELECT @update_id := id), instance=Iinstance, timebuy=Itimebuy, price=Iprice, comment=Icomment WHERE tariff=Itariff AND state = 0 LIMIT 1;
SELECT * FROM customer_shop WHERE id = @update_id;
END

我希望你们能帮助我,因为我完全不知道哪里出了问题。 :/

问候,马克

最佳答案

您需要定义一个替代命令分隔符,因为 MySQL 当前认为您的 CREATE PROCEDURE命令在它遇到的第一个 ; 处结束(在第 3 行,在 0 之后),这将是一个语法错误,因为它在 BEGIN 之后但在相应的 END 之前:

DELIMITER ;; -- or anything else you like

CREATE PROCEDURE
...
END;; -- use the new delimiter you chose above here

DELIMITER ; -- reset to normal

关于mysql - MySQL 中存储过程的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com