gpt4 book ai didi

mysql - MYSQL中嵌套存储过程出错

转载 作者:行者123 更新时间:2023-11-29 04:45:56 29 4
gpt4 key购买 nike

所以我有这个存储过程,我尝试用几种不同的方式编写,但都无济于事。

CREATE PROCEDURE `CreateHero`
(IN USER_EMAIL VARCHAR(40), IN NAME VARCHAR(16), IN GENDER VARCHAR(6))
BEGIN
INSERT INTO HEROES (USER_ID, NAME, GENDER)
VALUES
((CALL GetUserId(USER_EMAIL)), NAME, GENDER);
END

我收到这个错误

#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 'CALL GetUserId(USER_EMAIL)), NAME, GENDER)' at line 6

我已经试过一段时间了。

GetUserId 有效。我尝试将结果存储在一个临时变量中,然后将其插入,但这没有用。

不要不要脸 如果您可以确定一个解决方案,那么将 CALL GetUserId 存储在变量中的解决方案将是最好的。

最佳答案

你不能这样使用它。使用 OUT 参数重写您的 GetUserId 过程。

像这样:

DELIMITER $$
CREATE PROCEDURE GetUserId(IN p_email varchar(20), OUT p_id int)
BEGIN
SELECT id INTO p_id FROM users where email = p_email;
/*or whatever your procedure does*/
END$$
DELIMITER ;

那么您的过程 CreateHero 将如下所示:

DELIMITER $$
CREATE PROCEDURE `CreateHero`
(IN USER_EMAIL VARCHAR(40), IN NAME VARCHAR(16), IN GENDER VARCHAR(6))
BEGIN
DECLARE v_id int;
CALL GetUserId(USER_EMAIL, v_id);
INSERT INTO HEROES (USER_ID, NAME, GENDER)
VALUES
(v_id, NAME, GENDER);
END$$
DELIMITER ;

关于mysql - MYSQL中嵌套存储过程出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18941325/

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