在MySQL中,存儲過程支持IN、OUT和INOUT三種參數傳遞方式
IN參數:這是默認的參數傳遞方式。當你將一個參數聲明為IN時,表示該參數的值會從調用者傳遞到存儲過程內部,但在存儲過程內部不能修改其值。
OUT參數:當你將一個參數聲明為OUT時,表示該參數的值會從存儲過程返回到調用者。在存儲過程內部可以修改該參數的值,并將其作為輸出結果返回給調用者。
INOUT參數:當你將一個參數聲明為INOUT時,表示該參數的值既可以從調用者傳遞到存儲過程內部,也可以從存儲過程返回到調用者。在存儲過程內部可以修改該參數的值,并將其作為輸出結果返回給調用者。
下面是一個簡單的示例,展示了如何在MySQL存儲過程中使用INOUT參數:
DELIMITER //
CREATE PROCEDURE test_inout(INOUT a INT)
BEGIN
SET a = a * 2;
END //
DELIMITER ;
在上述示例中,我們創建了一個名為test_inout
的存儲過程,它接受一個名為a
的INOUT參數。在存儲過程內部,我們將a
的值乘以2,然后將結果返回給調用者。
要調用此存儲過程并傳遞一個INOUT參數,可以使用以下語句:
SET @input = 5;
CALL test_inout(@input);
SELECT @input;
在上述示例中,我們首先設置了一個名為@input
的變量,并將其值設置為5。然后,我們調用test_inout
存儲過程,并將@input
作為INOUT參數傳遞。最后,我們查詢@input
的值,可以看到它已經被存儲過程修改為原始值的兩倍(即10)。