|
在使用 Microsoft® SQL Server™ 2000 創(chuàng)建應(yīng)用程序時,Transact-SQL 編程語言是應(yīng)用程序和 SQL Server 數(shù)據(jù)庫之間的主要編程接口。使用 Transact-SQL 程序時,可用兩種方法存儲和執(zhí)行程序。可以在本地存儲程序,并創(chuàng)建向 SQL Server 發(fā)送命令并處理結(jié)果的應(yīng)用程序;也可以將程序在 SQL Server 中存儲為存儲過程,并創(chuàng)建執(zhí)行存儲過程并處理結(jié)果的應(yīng)用程序。
SQL Server 中的存儲過程與其它編程語言中的過程類似,原因是存儲過程可以:
接受輸入?yún)?shù)并以輸出參數(shù)的形式將多個值返回至調(diào)用過程或批處理。
包含執(zhí)行數(shù)據(jù)庫操作(包括調(diào)用其它過程)的編程語句。
向調(diào)用過程或批處理返回狀態(tài)值,以表明成功或失敗(以及失敗原因)。 可使用 Transact-SQL EXECUTE 語句運行存儲過程。存儲過程與函數(shù)不同,因為存儲過程不返回取代其名稱的值,也不能直接用在表達式中。
使用 SQL Server 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優(yōu)勢有:
允許模塊化程序設(shè)計。 只需創(chuàng)建過程一次并將其存儲在數(shù)據(jù)庫中,以后即可在程序中調(diào)用該過程任意次。存儲過程可由在數(shù)據(jù)庫編程方面有專長的人員創(chuàng)建,并可獨立于程序源代碼而單獨修改。
允許更快執(zhí)行。 如果某操作需要大量 Transact-SQL 代碼或需重復(fù)執(zhí)行,存儲過程將比 Transact-SQL 批代碼的執(zhí)行要快。將在創(chuàng)建存儲過程時對其進行分析和優(yōu)化,并可在首次執(zhí)行該過程后使用該過程的內(nèi)存中版本。每次運行 Transact-SQL 語句時,都要從客戶端重復(fù)發(fā)送,并且在 SQL Server 每次執(zhí)行這些語句時,都要對其進行編譯和優(yōu)化。
減少網(wǎng)絡(luò)流量。 一個需要數(shù)百行 Transact-SQL 代碼的操作由一條執(zhí)行過程代碼的單獨語句就可實現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。
可作為安全機制使用。 即使對于沒有直接執(zhí)行存儲過程中語句的權(quán)限的用戶,也可授予他們執(zhí)行該存儲過程的權(quán)限。
SQL Server 存儲過程是用 Transact-SQL 語句 CREATE PROCEDURE 創(chuàng)建的,并可用 ALTER PROCEDURE 語句進行修改。存儲過程定義包含兩個主要組成部分:過程名稱及其參數(shù)的說明,以及過程的主體(其中包含執(zhí)行過程操作的 Transact-SQL 語句)。
|