MySQL存儲過程是一組為了完成特定任務而預先編寫的SQL語句集合,可以封裝一些業(yè)務邏輯,簡化開發(fā)和維護的工作。存儲過程可以用于批量執(zhí)行相似操作或者提供高級數(shù)據處理功能。存儲過程支持多個參數(shù),它們可以是輸入參數(shù)、輸出參數(shù)或者輸入輸出參數(shù)。
在MySQL中,我們可以使用CREATE PROCEDURE語句來創(chuàng)建存儲過程。語法如下:
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) BEGIN proc_body END
其中proc_parameter是存儲過程參數(shù),它的語法如下:
[IN|OUT|INOUT] parameter_name data_type [parameter_length]
IN表示參數(shù)是輸入參數(shù),即存儲過程執(zhí)行時可以傳遞一個值給參數(shù);OUT表示參數(shù)是輸出參數(shù),即存儲過程執(zhí)行完畢后可以返回一個值;INOUT表示參數(shù)既是輸入參數(shù)也是輸出參數(shù)。
如果參數(shù)有長度限制,我們可以在參數(shù)類型后面加上長度。比如VARCHAR類型的參數(shù):
IN username VARCHAR(50)
創(chuàng)建了存儲過程后,我們可以使用CALL語句來執(zhí)行它。語法如下:
CALL sp_name(param1, param2, ...)
下面是一個例子,創(chuàng)建一個存儲過程,接受兩個INT類型的輸入參數(shù),并返回它們的和:
CREATE PROCEDURE addNumbers(IN num1 INT, IN num2 INT, OUT result INT) BEGIN SET result = num1 + num2; END
我們可以使用以下語句調用這個存儲過程:
CALL addNumbers(3, 4, @result); SELECT @result;
輸出結果為7。