翻譯|使用教程|編輯:莫成敏|2019-11-12 11:50:34.277|閱讀 2469 次
概述:大多數關系數據庫——包括MySQL、MariaDB和SQL Server,都支持存儲過程和函數。存儲過程和函數實際上非常相似,可以用來完成相同的任務。也就是說,在決定對特定工作使用哪個時,需要考慮兩者之間的一些關鍵差異。我們將在今天的文章中介紹這些內容。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat是一套快速、可靠并價格相當便宜的數據庫管理工具,專為簡化數據庫的管理及降低系統管理成本而設。它的設計符合數據庫管理員、開發人員及中小企業的需要。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創建、組織、訪問并共用信息。
大多數關系數據庫——包括MySQL、MariaDB和SQL Server,都支持存儲過程和函數。存儲過程和函數實際上非常相似,可以用來完成相同的任務。也就是說,在決定對特定工作使用哪個時,需要考慮兩者之間的一些關鍵差異。我們將在今天的文章中介紹這些內容。
存儲過程
存儲過程(簡稱“proc”)是一組具有指定名稱的結構化查詢語言(SQL)語句,它們以組的形式存儲在關系數據庫管理系統中,因此可以被多個程序重用和共享。存儲過程可以訪問或修改數據庫中的數據,但它并不綁定到特定的數據庫或對象。這種松散的耦合是有利的,因為很容易為不同但相似的目的重新分配proc。
存儲過程可以接受輸入參數并返回輸出參數的多個值;此外,存儲過程可以對語句進行編程以在數據庫中執行操作,并向調用過程或批處理返回狀態值。
最后,存儲過程可以執行多個SQL語句、調用函數,甚至迭代結果集,從而執行類似于編程代碼的復雜操作。完成后,proc通常會將更多結果集之一返回給調用應用程序。
用戶函數
函數類似于存儲過程,因為它包含一組執行特定任務的SQL語句。功能背后的想法是提高代碼的可重用性。如果必須重復編寫大型SQL腳本來執行同一任務,則可以創建一個執行該任務的函數,這樣,下次無需重寫SQL,只需調用該函數即可。數據庫通常包括一組執行各種任務的內置函數,因此在編寫自己的函數之前,請務必先對其進行研究。
函數接受參數形式的輸入并返回一個值。與存儲過程不同,函數不能返回結果集。而且,函數不能修改服務器環境或操作系統環境。
主要區別
雖然proc和函數都可以以類似的方式使用,但是函數被設計為將其輸出發送到查詢或SQL語句。同時,存儲過程旨在將輸出(即一個或多個結果集)返回給應用程序。
另一個區別是,您可以將一組SQL語句分組并在存儲過程中執行它們,而在SQL語句中不能調用存儲過程。另一方面,可以直接從查詢或存儲過程中調用函數。
最后,功能的局限性是必須為每一行調用它們。因此,如果您使用的函數具有較大的數據集,則可能會遇到性能問題。
在Navicat中查看存儲的過程和函數
在Navicat數據庫管理和開發工具中,您將在“函數”下看到proc和函數。存儲過程的前綴為“Px”,而函數的前綴為“fx”:
結論
存儲過程和函數在許多方面都非常相似,但是每種方法都有不同的用途。您可以將存儲的proc看作是一組SQL語句,而一個函數接受輸入并根據輸入參數返回輸出值。
點擊下載Navicat的產品Navicat for MySQL、Navicat for PostgreSQL、Navicat for Oracle、Navicat Premium進行評估~想要了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: