參考官方給出的:https://dev.mysql.com/doc/refman/8.0/en/stored-routines.html
Mysql的在線演示平臺:http://mysqltutorial.org//tryit/
Mysql支持存儲例程(Stored Routines)。存儲例程是一系列保存在Mysql服務器上的SQL語句集合。一旦存儲例程被創建,客戶端不需要再編寫單獨的SQL語句,而是,可以直接調用存儲例程。存儲例程包含了存儲過程(Stored Procedures)和存儲函數(Stored Functions)。
再某些場景下使用存儲例程:
(1) 當在不同的平臺上,多語言編寫的多客戶端,執行相同的數據庫操作的時候;
(2) 當安全至上的時候,比如銀行,會使用存儲過程和函數替代所有的通用操作。這樣會提供一個一致和安全的環境,存儲例程會日志記錄下每一個操作。用戶和應用程序將不能直接訪問數據庫表,而只能執行特定的存儲例程。
存儲過程的優點
1 可以避免開發人員重復的編寫相同的SQL語句。
2 存儲過程和函數是在Mysql服務器中存儲和執行的,可以減少客戶端和服務器端的數據傳輸。
3 可以復用
存儲過程的缺點
1 占用CPU
2
加載樣本數據到Mysql中;
創建存儲過程
存儲過程的創建是通過SQL關鍵字create procedure
。
比如,在產品表上創建一個名稱為——GetAllProducts的存儲過程。該存儲過程主要實現的功能是獲取產品表——products中的全部產品。具體的SQL如下:
DELIMITER //
CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT * FROM products;
END //
DELIMITER ;
以上是在mysql的控制臺客戶端執行的命令。如果有圖形化的客戶端,如Mysql Workbench,可以直接在里面點擊創建存儲過程。
存儲過程的變量
需要知道如何聲明和使用存儲過程的變量,另外,還需要了解變量生命范圍。
變量的聲明
語法如下:
declare variable_name datatype(size) default default_value
變量的賦值
有兩種方式:set和select into
變量的范圍
- 如果在存儲過程中聲明的變量,則其在整個存儲過程中都有用的;
- 如果在Begin End中聲明的,則只在當前的聲明中有用。
- 如果聲明的時候添加了@標志,則在Session結束之前都有用的;
變量做什么用
存儲過程的參數
參數的聲明
參數的作用
參數的使用
創建函數
定義條件和處理程序
變量的使用
光標的使用
查看存儲過程和函數
調用存儲過程和函數
修改存儲過程和函數
刪除存儲過程和函數
參考
視頻地址:http://www.phpxs.com/post/2740/
國外的一篇詳細介紹Mysql存儲過程的:http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx