MySQL存儲過程是一段可重復使用的SQL代碼。存儲過程可以接受參數、執行復雜的操作及返回值。
定義存儲過程
CREATE PROCEDURE procedure_name([IN|OUT|INOUT] param_name data_type [,...]) BEGIN -- 存儲過程邏輯 END;
說明:
procedure_name
:存儲過程名稱param_name
:參數名稱data_type
:參數數據類型IN|OUT|INOUT
:參數傳遞類型,IN
表示輸入參數,OUT
表示輸出參數,INOUT
表示既是輸入參數又是輸出參數
示例:
CREATE PROCEDURE select_user(IN user_id INT) BEGIN SELECT * FROM users WHERE id = user_id; END;
調用存儲過程
CALL procedure_name([parameter_list]);
示例:
CALL select_user(1);
MySQL存儲過程中可以使用變量、條件語句、循環等邏輯操作。
示例:
DELIMITER // CREATE PROCEDURE sum_numbers(IN max_num INT, OUT sum_num INT) BEGIN DECLARE num INT DEFAULT 1; DECLARE total INT DEFAULT 0; WHILE num<= max_num DO SET total = total + num; SET num = num + 1; END WHILE; SET sum_num = total; END// DELIMITER ; CALL sum_numbers(10, @total); SELECT @total;
存儲過程的好處是可以減少重復代碼的編寫,提高代碼的可重用性,還可以減少從應用程序到數據庫的網絡流量,提高查詢性能。