數(shù)據(jù)庫存儲(chǔ)過程 存儲(chǔ)過程在數(shù)據(jù)庫中的作用是什么?
存儲(chǔ)過程在數(shù)據(jù)庫中的作用是什么?存儲(chǔ)過程是一組預(yù)編譯的transact-SQL語句。將它放到服務(wù)器上,并讓用戶通過指定存儲(chǔ)過程的名稱來執(zhí)行它。存儲(chǔ)過程可以用作獨(dú)立的數(shù)據(jù)庫對(duì)象,也可以用作用戶應(yīng)用程序調(diào)
存儲(chǔ)過程在數(shù)據(jù)庫中的作用是什么?
存儲(chǔ)過程是一組預(yù)編譯的transact-SQL語句。將它放到服務(wù)器上,并讓用戶通過指定存儲(chǔ)過程的名稱來執(zhí)行它。存儲(chǔ)過程可以用作獨(dú)立的數(shù)據(jù)庫對(duì)象,也可以用作用戶應(yīng)用程序調(diào)用的單元。存儲(chǔ)過程可以接收和輸出參數(shù),返回執(zhí)行存儲(chǔ)過程的狀態(tài)值,以及嵌套調(diào)用。存儲(chǔ)過程與其他編程語言中的過程類似,主要體現(xiàn)在以下幾個(gè)方面:(1)存儲(chǔ)過程可以接收參數(shù)并以接收參數(shù)的形式返回多個(gè)參數(shù)來調(diào)用存儲(chǔ)過程和批處理。(2) 它包含執(zhí)行數(shù)據(jù)庫操作的編程語句,還可以調(diào)用其他存儲(chǔ)過程。(3) 向調(diào)用過程或批處理返回狀態(tài)值,以反映存儲(chǔ)過程的執(zhí)行情況。注意:存儲(chǔ)過程不同于函數(shù)。存儲(chǔ)過程不能在被調(diào)用位置返回?cái)?shù)據(jù),也不能應(yīng)用于語句。例如,存儲(chǔ)過程不能以類似于“@proc=stored procedure name”的方式使用。但是,存儲(chǔ)過程可以以變量的形式返回參數(shù)。存儲(chǔ)過程的優(yōu)點(diǎn)體現(xiàn)在以下幾個(gè)方面:(1)執(zhí)行速度快,并且在創(chuàng)建時(shí)經(jīng)過了語法檢查和性能優(yōu)化,因此在執(zhí)行時(shí)不必重復(fù)這些步驟。在第一次調(diào)用之后,存儲(chǔ)過程駐留在內(nèi)存中,不需要編譯和優(yōu)化,因此執(zhí)行速度非常快。當(dāng)需要重復(fù)執(zhí)行大量的批處理transact-SQL語句時(shí),使用存儲(chǔ)過程可以大大提高運(yùn)行效率。(2) 模塊化編程只需要?jiǎng)?chuàng)建一個(gè)存儲(chǔ)過程,并將其存儲(chǔ)在數(shù)據(jù)庫中,該數(shù)據(jù)庫可以在程序中多次調(diào)用。用戶可以獨(dú)立于應(yīng)用程序修改存儲(chǔ)過程。(3) 為了減少網(wǎng)絡(luò)流量,存儲(chǔ)過程可以包含大量transact-SQL語句。在調(diào)用中,只能使用一條語句,而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。(4) 為了保證系統(tǒng)的安全性,可以設(shè)置用戶通過存儲(chǔ)過程訪問一些關(guān)鍵數(shù)據(jù),但不允許用戶直接使用transact-SQL語句或enterprisemanager訪問這些數(shù)據(jù)。