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