MySQL存儲過程(proc)是一種預編譯的SQL語句集合,用于完成特定的業務邏輯操作。通過存儲過程,可以將重復性的SQL語句封裝成可重用的代碼塊,并且可以提高數據庫的效率,簡化開發流程。
MySQL的存儲過程使用PROCEDURE關鍵字定義,語法如下:
CREATE PROCEDURE procedure_name (IN parameter1 datatype, IN parameter2 datatype, ..., OUT result datatype) BEGIN -- 存儲過程實現代碼 END;
其中,IN關鍵字表示輸入參數,OUT關鍵字表示輸出參數,datatype表示參數類型。
下面是一個簡單的MySQL存儲過程實例:
DELIMITER // CREATE PROCEDURE `get_product_count` ( IN `p_category_id` INT(11), IN `p_status` VARCHAR(45), OUT `p_product_count` INT ) BEGIN SELECT COUNT(*) INTO p_product_count FROM `product` WHERE `category_id` = p_category_id AND `status` = p_status; END // DELIMITER ;
該存儲過程實現的功能是查詢某個分類下指定狀態的產品總數,并將結果輸出到參數p_product_count中。
通過CALL語句調用存儲過程:
CALL `get_product_count`(1, 'online', @product_count); SELECT @product_count;
其中,1和'online'是輸入參數,@product_count是輸出參數。
MySQL存儲過程還支持條件判斷、循環、異常處理等常見的編程語言特性。這些特性可以極大地提高存儲過程的適用性和可擴展性。