版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第九章存儲過程(StedProcedure)當(dāng)使用SQLServer創(chuàng)建應(yīng)用時,TRANSACTSQL語言是應(yīng)用程序與SQLServer數(shù)據(jù)庫之間的主要編程接口。使用TRANSACTSQL語言進(jìn)行程序設(shè)計時,有兩種方式:一種方式是在應(yīng)用程序中直接使用TSQL語句向SQLServer發(fā)送命令;另一種方式就是使用存儲過程。1、存儲過程的概述11存儲過程的概念存儲過程是一種數(shù)據(jù)庫對象,由一組預(yù)編譯的T_SQL語句組成,這些語句在一個名稱下存儲
2、,并作為一個單元進(jìn)行處理。存儲過程類似于其他編程語言中的函數(shù)或過程:能夠使用傳遞給它的參數(shù),能夠調(diào)用其它存儲過程甚至本身,能夠返回一個狀態(tài)碼來表示是否成功執(zhí)行。SQLServer中有三類存儲過程:系統(tǒng)存儲過程(sp_為前綴)、用戶自定義存儲過程和擴(kuò)展存儲過程(xp_為前綴,擴(kuò)展了SQLServer的功能,使得用戶能調(diào)用外部例程(自已編寫的程序或系統(tǒng)提供的命令))。12存儲過程的功能特點(diǎn)在SQLServer中,存儲過程是一種非常強(qiáng)有力的數(shù)
3、據(jù)庫對象,利用它能夠顯著提高應(yīng)用程序的性能。[1]功能?接收輸入?yún)?shù)并以輸出參數(shù)的形式為調(diào)用過程或批處理返回多個值?包含對數(shù)據(jù)庫操作的多條語句,可以調(diào)用其他存儲過程?為調(diào)用存儲過程或批處理返回一個狀態(tài)值,以表示執(zhí)行狀態(tài)[2]存儲過程的優(yōu)點(diǎn)?模塊化編程。一旦創(chuàng)建了一個存儲過程,就可以在應(yīng)用程序中多次調(diào)用它,而且由于存儲過程獨(dú)立于應(yīng)用程序,所以可以在不影響應(yīng)用程序源代碼的前提下修改它。?加快執(zhí)行速度。在創(chuàng)建一個存儲過程時,SQLServer
4、要對它進(jìn)行分析和優(yōu)化,以獲得最好的執(zhí)行性能;當(dāng)一個存儲過程被首次執(zhí)行后,它就會駐留內(nèi)存,當(dāng)再次調(diào)用時,就不必再加載了,從而提高了整個系統(tǒng)的執(zhí)行速度。?減少網(wǎng)絡(luò)通信量。使用存儲過程,客戶端的應(yīng)用程序可以通過一條簡單的執(zhí)行命令來執(zhí)行存放在服務(wù)器端的存儲過程,而不必傳輸成百上千行的SQL語句代碼,因此可以大大減少網(wǎng)絡(luò)阻塞。?提供安全機(jī)制。可以通過存儲過程來間接將某些權(quán)限賦給用戶。?復(fù)雜業(yè)務(wù)規(guī)則和約束的一致性實現(xiàn)。存儲過程足夠強(qiáng)大,甚至能夠?qū)崿F(xiàn)
5、最復(fù)雜的業(yè)務(wù)規(guī)則,這是因為存儲過程可以同時合并過程語句和面向集合的語句。13存儲過程的數(shù)據(jù)返回方式存儲過程可以通過四種方式把數(shù)據(jù)返回到調(diào)用處:?輸出參數(shù)。既可以返回數(shù)據(jù)(數(shù)值型或字符值等),也可以返回游標(biāo)變量(游標(biāo)是可以逐行檢索的結(jié)果集)。?反回值。始終是整型值。?結(jié)果集。這些語句包含在該存儲過程內(nèi)或該存儲過程所調(diào)用的任何其它存儲過程內(nèi)。?全局游標(biāo)??蓮拇鎯^程外引用的全局游標(biāo)。14使用存儲過程管理數(shù)據(jù)在三層結(jié)構(gòu)MIS的程序設(shè)計中,數(shù)據(jù)
6、管理層對數(shù)據(jù)的操作完全由存儲過程來實現(xiàn),特別是Web應(yīng)用程序。數(shù)據(jù)管理層中對數(shù)據(jù)的查找、插入、更新和刪除等操作都由相應(yīng)的存(二)語法說明23例例1:查找指定日期后簽定的訂單(創(chuàng)建有返回結(jié)果集的存儲過程)createprocedurep1@datexdatetimeasfromderswherederdate=@datex[executep1‘199711’]例2:求產(chǎn)品的平均單價(創(chuàng)建有返回參數(shù)的存儲過程)createprocedure
7、[dbo].[p2]@avgpricemoneyoutputas@avgprice=avg(unitprice)fromproducts[declare@xmoneyexecutep2@xoutput@x]例3:判斷是否有1997年2月20號簽定的訂單,有返回0,沒有返回1(創(chuàng)建有返回值的存儲過程)createprocedure[dbo].[p3]@datexdatetimeasifexists(fromderswherederdate
8、=@datex)return0elsereturn1[declare@xintexecute@x=p31997220@x]例4:根據(jù)最后姓名模糊查找職員信息(創(chuàng)建帶有缺省值參數(shù)的存儲過程)createprocedure[dbo].[p4]@namexnvar(20)=D%asfromemployeeswherelastnamelike@namex%[executep4][executep4‘B’]例5:建立存儲過程更一般的方法(SQLS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論