![](/img/trans.png)
[英]mysql stored procedure, select max value and insert the value and assign to variable
[英]MySQL Stored procedure SELECT var wrong value after INSERT
我在MySQL存儲過程上有問題,已經用IF THEN ELSE做了另一個邏輯,但是我仍然有我無法理解的問題...
該過程由兩個用戶輸入組成: user_id和met_id 。 該過程定義了一個名為“ ue”的變量,該變量存儲一堆驗證的結果( 如果存在用戶,事件存在,事件日期仍然有效等 )。
之后,它將在IF THEN ELSE選擇器中的多個表上執行INSERT和UPDATE,並根據驗證選擇SELECT 1(或0)AS結果。
但是我的問題是:執行INSERT時,它總是返回0作為“結果”,就好像我的驗證變量是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參數之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.