存儲(chǔ)過程
1.什么是存儲(chǔ)過程
存儲(chǔ)過程是 SQL 語(yǔ)句和可選控制流語(yǔ)句的預(yù)編譯集合,以一個(gè)名稱存儲(chǔ)并作為一個(gè)單元處理,是數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象。
存儲(chǔ)過程存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi),可由應(yīng)用程序通過一個(gè)調(diào)用執(zhí)行,而且允許用戶聲明變量、有條件執(zhí)行以及其它強(qiáng)大的編程功能。
2.存儲(chǔ)過程的類型
1、系統(tǒng)存儲(chǔ)過程:以“sp_”為前綴標(biāo)識(shí),存儲(chǔ)在“master”數(shù)據(jù)庫(kù)中,提供對(duì)系統(tǒng)表的檢索和管理功能。
2、擴(kuò)展存儲(chǔ)過程:以“xp_”為前綴標(biāo)識(shí),通過執(zhí)行外部DLL來實(shí)現(xiàn)功能。
3、本地存儲(chǔ)過程:創(chuàng)建在用戶數(shù)據(jù)庫(kù)中。
4、臨時(shí)存儲(chǔ)過程:主要用于用戶會(huì)話中臨時(shí)存儲(chǔ)的功能。
5、遠(yuǎn)程存儲(chǔ)過程:為早期功能。
3.存儲(chǔ)過程的優(yōu)點(diǎn)
1、與其他應(yīng)用程序共享應(yīng)用邏輯,確保一致的數(shù)據(jù)訪問和修改。存儲(chǔ)過程封裝了商務(wù)邏輯。若規(guī)則或策略有變化,則只需要修改服務(wù)器上的存儲(chǔ)過程,所有的客戶端就可以直接使用。
2、屏蔽數(shù)據(jù)庫(kù)模式的詳細(xì)資料。用戶不需要訪問底層的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)內(nèi)的對(duì)象。
3、提供了安全性機(jī)制。用戶可以被賦予執(zhí)行存儲(chǔ)過程的權(quán)限,而不必在存儲(chǔ)過程引用的所有對(duì)象上都有權(quán)限。
4、改善性能。預(yù)編譯的 Transact-SQL 語(yǔ)句,可以根據(jù)條件決定執(zhí)行哪一部分。
5、減少網(wǎng)絡(luò)通信量。客戶端用一條語(yǔ)句調(diào)用存儲(chǔ)過程,就可以完成可能需要大量語(yǔ)句才能完成的任務(wù),這樣減少了客戶端和服務(wù)器之間的請(qǐng)求/回答包。