Navicat使用教程:了解關系數(shù)據(jù)庫中的存儲過程和函數(shù)
Navicat是一套快速、可靠并價格相當便宜的數(shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設。它的設計符合數(shù)據(jù)庫管理員、開發(fā)人員及中小企業(yè)的需要。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創(chuàng)建、組織、訪問并共用信息。
大多數(shù)關系數(shù)據(jù)庫——包括MySQL、MariaDB和SQL Server,都支持存儲過程和函數(shù)。存儲過程和函數(shù)實際上非常相似,可以用來完成相同的任務。也就是說,在決定對特定工作使用哪個時,需要考慮兩者之間的一些關鍵差異。我們將在今天的文章中介紹這些內容。
存儲過程
存儲過程(簡稱“proc”)是一組具有指定名稱的結構化查詢語言(SQL)語句,它們以組的形式存儲在關系數(shù)據(jù)庫管理系統(tǒng)中,因此可以被多個程序重用和共享。存儲過程可以訪問或修改數(shù)據(jù)庫中的數(shù)據(jù),但它并不綁定到特定的數(shù)據(jù)庫或對象。這種松散的耦合是有利的,因為很容易為不同但相似的目的重新分配proc。
存儲過程可以接受輸入?yún)?shù)并返回輸出參數(shù)的多個值;此外,存儲過程可以對語句進行編程以在數(shù)據(jù)庫中執(zhí)行操作,并向調用過程或批處理返回狀態(tài)值。
最后,存儲過程可以執(zhí)行多個SQL語句、調用函數(shù),甚至迭代結果集,從而執(zhí)行類似于編程代碼的復雜操作。完成后,proc通常會將更多結果集之一返回給調用應用程序。
用戶函數(shù)
函數(shù)類似于存儲過程,因為它包含一組執(zhí)行特定任務的SQL語句。功能背后的想法是提高代碼的可重用性。如果必須重復編寫大型SQL腳本來執(zhí)行同一任務,則可以創(chuàng)建一個執(zhí)行該任務的函數(shù),這樣,下次無需重寫SQL,只需調用該函數(shù)即可。數(shù)據(jù)庫通常包括一組執(zhí)行各種任務的內置函數(shù),因此在編寫自己的函數(shù)之前,請務必先對其進行研究。
函數(shù)接受參數(shù)形式的輸入并返回一個值。與存儲過程不同,函數(shù)不能返回結果集。而且,函數(shù)不能修改服務器環(huán)境或操作系統(tǒng)環(huán)境。
主要區(qū)別
雖然proc和函數(shù)都可以以類似的方式使用,但是函數(shù)被設計為將其輸出發(fā)送到查詢或SQL語句。同時,存儲過程旨在將輸出(即一個或多個結果集)返回給應用程序。
另一個區(qū)別是,您可以將一組SQL語句分組并在存儲過程中執(zhí)行它們,而在SQL語句中不能調用存儲過程。另一方面,可以直接從查詢或存儲過程中調用函數(shù)。
最后,功能的局限性是必須為每一行調用它們。因此,如果您使用的函數(shù)具有較大的數(shù)據(jù)集,則可能會遇到性能問題。
在Navicat中查看存儲的過程和函數(shù)
在Navicat數(shù)據(jù)庫管理和開發(fā)工具中,您將在“函數(shù)”下看到proc和函數(shù)。存儲過程的前綴為“Px”,而函數(shù)的前綴為“fx”:
結論
存儲過程和函數(shù)在許多方面都非常相似,但是每種方法都有不同的用途。您可以將存儲的proc看作是一組SQL語句,而一個函數(shù)接受輸入并根據(jù)輸入?yún)?shù)返回輸出值。
點擊下載Navicat的產(chǎn)品Navicat for MySQL、Navicat for PostgreSQL、Navicat for Oracle、Navicat Premium進行評估~想要了解更多產(chǎn)品信息請點擊【咨詢在線客服】