MySQL存儲過程是一段預定義好的SQL代碼,可以被重復執行。存儲過程可以使數據的模塊化處理變得更加簡單、高效。
在MySQL中,存儲過程可以使用CREATE PROCEDURE語句來創建。語法如下:
CREATE PROCEDURE procedure_name ( [IN|OUT|INOUT] parameter_name data_type, [IN|OUT|INOUT] parameter_name data_type, ... ) BEGIN -- SQL statements END;
CREATE PROCEDURE語句中有幾個重要的關鍵字:
- procedure_name:存儲過程的名稱
- IN|OUT|INOUT:參數的類型,其中IN表示輸入參數,OUT表示輸出參數,INOUT表示既作為輸入參數又作為輸出參數
- parameter_name:參數的名稱
- data_type:參數的數據類型
- BEGIN...END:存儲過程的主體部分,其中包含一系列的SQL語句
下面是一個簡單的存儲過程的例子,它將一條記錄插入到users表中:
CREATE PROCEDURE insert_user( IN name VARCHAR(50), IN age INT, IN email VARCHAR(50) ) BEGIN INSERT INTO users(name, age, email) VALUES(name, age, email); END;
存儲過程可以通過CALL語句來調用。語法如下:
CALL procedure_name(parameter1, parameter2, ...);
下面是一個調用insert_user存儲過程的例子:
CALL insert_user('張三', 18, 'zhangsan@example.com');
存儲過程的優點在于:
- 減少了重復的SQL代碼,提高了代碼的可維護性
- 在數據庫中執行存儲過程比在客戶端中執行單個SQL語句更加高效