簡體   English   中英

插入后MySQL存儲過程SELECT VAR錯誤值

[英]MySQL Stored procedure SELECT var wrong value after INSERT

我在MySQL存儲過程上有問題,已經用IF THEN ELSE做了另一個邏輯,但是我仍然有我無法理解的問題...

該過程由兩個用戶輸入組成: user_idmet_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM