我有這個存盤程序:
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;
uj5u.com熱心網友回復:
使用SELECT ... INTO variable時,查詢必須最多回傳一行。如果您只關心是否有任何匹配的行,則可以使用該EXISTS()函式。
SET p_returnvalue = EXISTS(
SELECT 1
FROM bookingstickets
WHERE TicketId = p_TicketID);
順便說一句,相當于 PHP 函式的 MySQLmysqli_affected_rows()是ROW_COUNT().
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418283.html
標籤:
上一篇:排序表和按兩列分組
