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