gpt4 book ai didi

MySQL 存储过程 SELECT var INSERT 后值错误

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

我在 MySQL 存储过程上遇到问题,已经使用 IF THEN ELSE 执行了另一个逻辑,但我仍然遇到了我无法理解的问题...

该过程由两个用户输入组成:user_idmeet_id。该过程定义了一个名为'ue'的变量,它存储一系列验证的结果(如果用户存在,如果事件存在,如果事件日期仍然有效,等等) .

之后,它会在 IF THEN ELSE 选择器中的多个表上插入和更新一些数据,并根据验证选择 1(或 0)AS 结果。

但我的问题是:它总是返回 0 作为“结果”,就好像我执行 INSERT 时我的验证变量为 0...如果我删除 INSERT [...] ;代码行,它正确返回我验证的值(1 或 0)。

程序的代码是这样的:

CREATE DEFINER=`nwouserf`@`localhost` 
PROCEDURE `join_event`(IN `user_id` BIGINT(64), IN `event_id` INT)
NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER

begin
DECLARE ue INT;
SET ue = EXISTS(SELECT 1 FROM users WHERE fb_uid=user_id)
AND EXISTS(SELECT 1 FROM meetup WHERE meet_id=event_id)
AND EXISTS(SELECT 1 FROM meetup WHERE date > NOW() AND meet_id = event_id)
AND EXISTS(SELECT 1 FROM meetup WHERE meet_id = event_id AND participants <= max_participants)
AND NOT EXISTS(SELECT 1 FROM meetup_participation WHERE fb_uid = user_id AND meet_id = event_id);

IF ue = 1 THEN

INSERT INTO meetup_participation (fb_uid, meet_id) VALUES (user_id, event_id);
UPDATE users SET events_participated = events_participated + 1 WHERE fb_uid=user_id;
UPDATE meetup SET participants = participants + 1 WHERE meet_id=event_id;
SELECT 1 AS result;

ELSEIF ue = 0 THEN
SELECT 0 AS result;
ELSE
SELECT null AS result;
END IF;
end

提前致谢!我已经被困在这个问题上有一段时间了,不明白为什么。

最佳答案

您应该定义 OUT 参数。添加

", OUT 结果 INT"

紧接在最后一个 IN 参数之后。

关于MySQL 存储过程 SELECT var INSERT 后值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428978/

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