簡體   English   中英

MySql 存儲過程行問題

[英]MySql stored procedure rows issue

我有這個存儲過程:

    CREATE DEFINER=`admin`@`%` PROCEDURE `GetTickets4Card`(
        IN p_TicketID int, 
        OUT p_returnvalue int
    )

BEGIN

    SELECT idbookingstickets
        INTO @p_returnvalue
        FROM bookingstickets 
        WHERE TicketId = p_TicketID;
        
        /* Return value accordingly */
        IF mysqll_affected_rows = 0 THEN  SET p_returnvalue = 0;
        /*
        ELSE
            SELECT * FROM BookingsTicketsCollected WHERE p_returnalue = idtickets;
            if mysqll_affected_rows = 0 THEN SET p_returnvalue = -1;
            END IF;
            */
        END IF;
    END

它給了我以下錯誤:“結果由不止一行組成”。 它可能與mysql_affected_rows有關,但我不知道,我想知道 sql 語句是否返回 1 行,有什么想法嗎?

調用代碼:

set @p_returnvalue = 0;
call yourTICKETbox_LIVE_DB.GetTickets4Card("aabb188e-6adc-11e5-9770-061de6653ea3", @p_returnvalue);
select @p_returnvalue;

當您使用SELECT... INTO variable時,查詢必須最多返回一行。 如果您只關心是否有任何匹配的行,您可以使用EXISTS() function。

SET p_returnvalue = EXISTS(
    SELECT 1
    FROM bookingstickets 
    WHERE TicketId = p_TicketID);

順便說一句,MySQL 等效於 PHP function mysqli_affected_rows()ROW_COUNT()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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