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