時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(2)
微軟的SQL Server的存儲(chǔ)過(guò)程機(jī)制能夠通過(guò)對(duì)Transact-SQL語(yǔ)句進(jìn)行組合而大大地簡(jiǎn)化了數(shù)據(jù)庫(kù)開(kāi)發(fā)過(guò)程。
存儲(chǔ)過(guò)程功能的優(yōu)點(diǎn)
為什么要使用存儲(chǔ)過(guò)程?以下是存儲(chǔ)過(guò)程技術(shù)的幾大主要優(yōu)點(diǎn):
預(yù)編譯執(zhí)行程序。SQL Server只需要對(duì)每一個(gè)存儲(chǔ)過(guò)程進(jìn)行一次編譯,然后就可以重復(fù)使用執(zhí)行計(jì)劃。這個(gè)特點(diǎn)通過(guò)重復(fù)調(diào)用存儲(chǔ)程序極大地提高了程序的性能。
縮短客戶(hù)端/服務(wù)器之間的信息傳輸量。如果你的工作環(huán)境帶寬有限,那么存儲(chǔ)過(guò)程技術(shù)肯定能夠滿(mǎn)足你,因?yàn)樗軌虬研枰獋鬏數(shù)拈L(zhǎng)的SQL查詢(xún)縮短成一行。
有效重復(fù)使用代碼和編程。存儲(chǔ)過(guò)程可以為多個(gè)用戶(hù)所使用,也可以用于多個(gè)客戶(hù)程序。這樣可以減少程序開(kāi)發(fā)周期的時(shí)間。
增強(qiáng)安全性控制??梢栽试S用戶(hù)單獨(dú)執(zhí)行存儲(chǔ)過(guò)程,而不給于其訪問(wèn)表格的權(quán)限。
結(jié)構(gòu)
存儲(chǔ)過(guò)程的結(jié)構(gòu)跟其他編程語(yǔ)言非常相似。存儲(chǔ)過(guò)程接受輸入?yún)?shù)形式的數(shù)據(jù)。這些輸入?yún)?shù)在執(zhí)行系列語(yǔ)句的時(shí)候被運(yùn)用并生成結(jié)果。結(jié)果在通過(guò)使用記錄集、輸出參數(shù)和返回代碼返回。聽(tīng)起來(lái)似乎很復(fù)雜,實(shí)際上存儲(chǔ)程序非常簡(jiǎn)單。
實(shí)例
假設(shè)我們有如下名為Inventory的表格,表格里的數(shù)據(jù)需要實(shí)時(shí)更新,倉(cāng)庫(kù)經(jīng)理會(huì)不停地檢查倉(cāng)庫(kù)里的貨存數(shù)量和可供發(fā)貨的貨存數(shù)量。以前,每一個(gè)地區(qū)的倉(cāng)庫(kù)經(jīng)理都會(huì)進(jìn)行如下查詢(xún):
以下是引用片段:
SELECT Product, Quantity
FROM Inventory
WHERE Warehouse = 'FL'
這樣的查詢(xún)使SQL Server性能效率非常低下。每次倉(cāng)庫(kù)經(jīng)理執(zhí)行該查詢(xún),數(shù)據(jù)庫(kù)服務(wù)器都不得不重新對(duì)其進(jìn)行編譯然后重新開(kāi)始執(zhí)行。這樣的查詢(xún)還要求倉(cāng)庫(kù)經(jīng)理具備SQL方面的知識(shí),并且擁有訪問(wèn)表格數(shù)據(jù)的權(quán)限。
我們可以通過(guò)使用存儲(chǔ)過(guò)程來(lái)簡(jiǎn)化這個(gè)查詢(xún)過(guò)程。首先創(chuàng)建一個(gè)名為 sp_GetInventory的過(guò)程,能夠獲取一個(gè)已有倉(cāng)庫(kù)的貨存水平。下面是創(chuàng)建該程序的SQL代碼:
以下是引用片段:
CREATE PROCEDURE sp_GetInventory
@location varchar(10)
AS
SELECT Product, Quantity
FROM Inventory
WHERE Warehouse = @location
A地區(qū)的倉(cāng)庫(kù)經(jīng)理可以執(zhí)行下面的命令來(lái)獲得貨存水平:
以下是引用片段:
EXECUTE sp_GetInventory 'FL'
B地區(qū)的倉(cāng)庫(kù)經(jīng)理可以使用同樣的存儲(chǔ)過(guò)程來(lái)訪問(wèn)該地區(qū)的貨存信息。
以下是引用片段:
EXECUTE sp_GetInventory 'NY'
當(dāng)然,這只是一個(gè)很簡(jiǎn)單的例子,但是可以看出來(lái)存儲(chǔ)過(guò)程的好處。倉(cāng)庫(kù)經(jīng)理不一定要懂得SQL或者存儲(chǔ)過(guò)程內(nèi)在的工作原理。從性能的角度看的話(huà),存儲(chǔ)過(guò)程無(wú)疑大大地提高了工作的效率。SQL Server只需創(chuàng)建執(zhí)行計(jì)劃一次,然后就可以重復(fù)使用存儲(chǔ)過(guò)程,只需要在每次執(zhí)行時(shí)輸入適當(dāng)?shù)膮?shù)就可以了。
關(guān)鍵詞標(biāo)簽:SQL Server
相關(guān)閱讀
熱門(mén)文章
淺談JSP JDBC來(lái)連接SQL Server 2005的方法
SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟
sql server系統(tǒng)表?yè)p壞的解決方法
MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法