存储函数与存储过程的区别
生活随笔
收集整理的這篇文章主要介紹了
存储函数与存储过程的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 讀寫權限不同
存儲函數:設計之初的目的是只讀的(但是實際并沒有嚴格限制)
存儲過程:可讀可寫
存儲函數的讀寫權限這里要特殊說明一下:
創建存儲函數的時候后,必須聲明函數讀寫權限,且只能在DETERMINISTIC, NO SQL, or READS SQL DATA中選擇。這三者的含義為確定性、無SQL語句、只對數據庫進行讀操作。
如果沒有聲明讀寫權限,就會報下面的錯誤:
如果想不報錯,除了聲明參數還有一個辦法,執行SET GLOBAL log_bin_trust_routine_creators = 1;命令來禁止掉對SUPER權限的要求。
注意:雖然存儲函數的聲明要求是只讀的,但是卻不會對函數中的語句進行檢查,所有我們仍然可以在存儲函數中進行寫數據庫的操作。
2. 返回不同
存儲函數:必須有返回值
存儲過程:返回值可有可無,通過OUT參數返回
3. 調用方式不同
存儲函數:只能在sql語句中調用,比如:select function();
存儲過程:只能單獨調用,比如:call procedure();
總結
綜上所述,可以看出存儲函數與存儲過程在設計上還是用不一樣的地方
- 存儲函數:是為了計算一些東西
- 存儲過程:是一些sql語句的集合
總結
以上是生活随笔為你收集整理的存储函数与存储过程的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark 2.4安装
- 下一篇: WCF Rest Service