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