存儲過程
定義:
存儲過程是一組為了完成特定功能的SQL語句,是由一些SQL語句組成的代碼塊,這些代碼塊像方法一樣實現一些功能(對單表或多表的增刪改查),然后給代碼塊起一個名字,用到的時候再調用它。存儲過程具有輸入參數、輸出參數和輸入/輸出參數,可以在數據庫服務器上執行。
優點:
- 存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度,效率要比T-SQL語句高。
- 當對數據庫進行復雜操作時,可以用存儲過程把這些復雜操作封裝起來,與數據庫提供的事務處理結合一起使用。
- 一個存儲過程在程序在網絡中交互時可以替代大堆的T-SQL語句,所以也能降低網絡的通信量,提高通信速率。
- 存儲過程可以重復使用,可減少數據庫開發人員的工作量。
- 安全性高,可設定只有某些用戶才具有對指定存儲過程的使用權。
創建存儲過程
聲明分隔符和存儲過程的基本語法:
在 MySQL 中,創建一個包含多個 SQL 語句的存儲過程時,通常需要聲明一個新的分隔符,因為默認的分隔符是 ;,而存儲過程的主體部分可能包含多個 ;,會導致解析問題。
通過使用 DELIMITER 命令,可以更改分隔符,以便 MySQL 能正確地識別存儲過程的開始和結束。
設置新的分隔符(例如 $$),然后在存儲過程結束后恢復默認分隔符 ;
DELEMITER $$CREATE PROCEDURE procedure_name (parameters)
BEGIN-- 過程體
EDN $$DELIMITER ;
/* 參數類型
IN:輸入參數,調用時傳入。
OUT:輸出參數,存儲過程執行后傳出。
INOUT:既是輸入參數又是輸出參數 */