版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù):了解T-SQL的變量和運(yùn)算符。學(xué)習(xí)存儲(chǔ)過(guò)程的定義及其特點(diǎn),創(chuàng)建存儲(chǔ)過(guò)程的方法,如何執(zhí)行存儲(chǔ)過(guò)程,查看、修改、刪除存儲(chǔ)過(guò)程。
7.1認(rèn)識(shí)T-SQL的變量和運(yùn)算7.2認(rèn)識(shí)存儲(chǔ)過(guò)程7.3創(chuàng)建存儲(chǔ)過(guò)程7.3創(chuàng)建存儲(chǔ)過(guò)程7.4管理存儲(chǔ)過(guò)程7.5知識(shí)進(jìn)階項(xiàng)目實(shí)訓(xùn)任務(wù)七提高數(shù)據(jù)操作速度
__在SQLServer2005中創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程了解T-SQL的變量和運(yùn)算符了解什么是存儲(chǔ)過(guò)程及其特點(diǎn)掌握創(chuàng)建存儲(chǔ)過(guò)程的方法掌握如何執(zhí)行存儲(chǔ)過(guò)程學(xué)會(huì)查看、修改、刪除存儲(chǔ)過(guò)程學(xué)習(xí)目標(biāo)創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.1認(rèn)識(shí)T-SQL的變量和運(yùn)算任務(wù):定義、使用T-SQL的局部變量,了解T-SQL的運(yùn)算符。7.1.1T-SQL的變量7.1.2T-SQL的運(yùn)算符創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程T-SQL語(yǔ)言的變量分為局部變量和全局變量。1.局部變量局部變量使用DECLARE語(yǔ)句聲明,在聲明時(shí)它的默認(rèn)值為NULL,使用SET語(yǔ)句為其賦值。局部變量?jī)H生存于聲明它批中,如存儲(chǔ)過(guò)程。處理結(jié)束后,局部變量中的信息將丟失。SQLServer使用SELECT語(yǔ)句或PRINT語(yǔ)句來(lái)將變量的值提交給用戶,而存儲(chǔ)過(guò)程則將變量作為一個(gè)Output參數(shù)返回?;菊Z(yǔ)法如下:
DECLARE@variable_namedatatype[,@variable_namedatatype][,…n]7.1.1T-SQL的變量其中:
@variable_name局部變量的名稱。以@開(kāi)始,必須遵循SQL標(biāo)識(shí)符和對(duì)象的命名規(guī)范,且名字不能使用保留字。
@datatype指定局部變量的數(shù)據(jù)類型。該數(shù)據(jù)類型可以是系統(tǒng)數(shù)據(jù)類型或用戶自定義數(shù)據(jù)類型。使用SET語(yǔ)句給局部變量賦值:SET@variable_name=expression[,@variable_name=expression]…創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程【例7-1】定義整型局部變量和一個(gè)字符型局部變量并賦值。代碼如下:DECLARE@variable_intint,@variable_charchar(15)SET@variable_int=60SELECT@variable_char='HELLOCHINA'SELECT@variable_intSELECT@variable_char如果被賦值的字符串長(zhǎng)度超過(guò)DECLARE語(yǔ)句中定義的長(zhǎng)度,賦值時(shí)超出的部分將被截去。7.1.1T-SQL的變量創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程2.全局變量全局變量是SQLServer系統(tǒng)所提供并賦值的變量。全局變量的名字以@@開(kāi)頭。大多數(shù)全局變量的值是報(bào)告用戶當(dāng)前會(huì)話信息。表7-1給出了SQLServer的常見(jiàn)全局變量??梢允褂肧ELECT顯示局部變量和全局變量的值(必須首先定義變量)?;菊Z(yǔ)法如下:顯示局部變量:SELECT@variable_name
顯示全局變量:SELECT@@variable_name7.1.1T-SQL的變量創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程在SQLServer2005中有一元運(yùn)算符、賦值運(yùn)算符、算術(shù)運(yùn)算符、比較運(yùn)算符、連接運(yùn)算符、邏輯運(yùn)算符等。1.一元運(yùn)算符包括3種:+(正)、-(負(fù))和~(按位取反)。其中~(按位取反)只可用于整型數(shù)據(jù)類型的表達(dá)式。2.賦值運(yùn)算符賦值運(yùn)算符,即等號(hào)(=),主要用于為變量賦值。3.算數(shù)運(yùn)算符包括:加(+)、減(-)、乘(×)、除(÷)和取模(℅)??梢圆僮鞯臄?shù)據(jù)類型是int、smallint、tinyint、float、real、money或者smallmoney;加和減運(yùn)算符可用于對(duì)datetime及smalldatetime值執(zhí)行算數(shù)運(yùn)算;取模(℅)運(yùn)算操作數(shù)的數(shù)據(jù)類型是int、smallint、tinyint。7.1.2T-SQL的運(yùn)算符創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程4.比較運(yùn)算符包含=、>、>=、<、<=、<>(不等于)、()(優(yōu)先級(jí)控制符)??捎糜诔藅ext、ntext或image數(shù)據(jù)類型以外的所有的表達(dá)式。比較運(yùn)算符的結(jié)果為布爾數(shù)據(jù)類型,包含true、false兩種值。5.連接運(yùn)算符連接運(yùn)算符(+)用于兩個(gè)字符串的連接。字符串連接運(yùn)算符用來(lái)連接char、varchar和text數(shù)據(jù)類型。6.邏輯運(yùn)算符包括:AND(與)、OR(或)、NOT(非)邏輯運(yùn)算符也稱為位運(yùn)算符。使用邏輯運(yùn)算符可以把多個(gè)條件合并起來(lái),邏輯運(yùn)算返回的數(shù)據(jù)類型為布爾型。7.1.2T-SQL的運(yùn)算符創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.1.2T-SQL的運(yùn)算符
()(括號(hào))~(按位取反)正、負(fù)乘、除、取模:*、/、%加、連接符、減比較運(yùn)算符:=、>、<、>=、<=、<>NOT(非)AND(與)OR(或)=(賦值)高低SQLServer中各種運(yùn)算符的優(yōu)先級(jí)順序創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程
7.2認(rèn)識(shí)存儲(chǔ)過(guò)程任務(wù):了解存儲(chǔ)過(guò)程的定義,分析“高職院校教學(xué)管理系統(tǒng)”的存儲(chǔ)過(guò)程需求。7.2.1存儲(chǔ)過(guò)程的概念及特點(diǎn)7.2.2分析“高職院校教學(xué)管理系統(tǒng)”的存儲(chǔ)過(guò)程需求創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.2.1存儲(chǔ)過(guò)程的概念及特點(diǎn)1.什么是存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程是一組預(yù)先編譯好的、能實(shí)現(xiàn)特定數(shù)據(jù)操作功能的SQL代碼集。它與特定數(shù)據(jù)庫(kù)相關(guān)聯(lián),一起被存儲(chǔ)在SQLServer服務(wù)器上??蛻舳送ㄟ^(guò)應(yīng)用程序調(diào)用執(zhí)行,可以象使用函數(shù)一樣重復(fù)使用這此代碼集,實(shí)現(xiàn)所定義的操作。存儲(chǔ)過(guò)程分為以下3類:⑴系統(tǒng)存儲(chǔ)過(guò)程安裝SQLServer時(shí)由系統(tǒng)創(chuàng)建的存儲(chǔ)過(guò)程。存儲(chǔ)在master數(shù)據(jù)庫(kù)中,其前綴為sp_。⑵用戶自定義存儲(chǔ)過(guò)程用戶在用戶數(shù)據(jù)庫(kù)中創(chuàng)建的存儲(chǔ)過(guò)程。⑶擴(kuò)展存儲(chǔ)過(guò)程是SQLServer可以動(dòng)態(tài)裝載并執(zhí)行的動(dòng)態(tài)鏈接庫(kù)(DLL),其前綴為xp_,它允許用戶使用DLL訪問(wèn)SQLServer。用戶使用其他編程語(yǔ)言(如C或C++等)編寫(xiě)。創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.2.1存儲(chǔ)過(guò)程的概念及特點(diǎn)2.存儲(chǔ)過(guò)程的特點(diǎn)存儲(chǔ)過(guò)程需要先編譯后運(yùn)行,而再次調(diào)用該存儲(chǔ)過(guò)程時(shí),不需再次編譯。存儲(chǔ)過(guò)程能夠接受參數(shù)、嵌套調(diào)用另一存儲(chǔ)過(guò)程、返回狀態(tài)值和調(diào)用結(jié)果,還可以被遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行。有以下特點(diǎn):⑴能極大增強(qiáng)SQL語(yǔ)句的功能、效率和靈活性⑵更好地保證數(shù)據(jù)的完整性和安全性⑶能降低網(wǎng)絡(luò)的通信流量⑷能提高應(yīng)用的開(kāi)發(fā)效率和系統(tǒng)的可維護(hù)性創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.2.2分析“高職院校教學(xué)管理系統(tǒng)”的存儲(chǔ)過(guò)程需求⑴存儲(chǔ)、檢索、維護(hù)學(xué)生的信息,如查詢有關(guān)學(xué)生的基本信息、在學(xué)生信息表中增加記錄、查詢有關(guān)學(xué)生的學(xué)習(xí)成績(jī),平均成績(jī)及總成績(jī)。⑵存儲(chǔ)、檢索、維護(hù)教師的信息,如查詢有關(guān)教師的信息、在教師表中增加或刪除教師信息。⑶存儲(chǔ)、檢索、維護(hù)班級(jí)信息,如查詢某個(gè)班的平均成績(jī),查詢某門(mén)課程的不及格人數(shù)。⑷存儲(chǔ)、檢索、維護(hù)課程的信息,如查詢某門(mén)課程由哪個(gè)教師任教,查詢?cè)撜n程的平均成績(jī)。創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.3創(chuàng)建存儲(chǔ)過(guò)程任務(wù):創(chuàng)建帶輸入、輸出參數(shù)的存儲(chǔ)過(guò)程,應(yīng)用輸入?yún)?shù)帶入查詢條件,輸出參數(shù)帶出統(tǒng)計(jì)結(jié)果。
7.3.1創(chuàng)建和執(zhí)行存儲(chǔ)過(guò)程的步驟7.3.2創(chuàng)建和調(diào)用不帶參數(shù)的存儲(chǔ)過(guò)程7.3.3創(chuàng)建和調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.3.1創(chuàng)建和執(zhí)行存儲(chǔ)過(guò)程的步驟用戶自定義存儲(chǔ)過(guò)程應(yīng)遵循以下原則:存儲(chǔ)過(guò)程的名稱不能使用sp_作前綴。不要為只運(yùn)行一次的T-SQL命令組構(gòu)建存儲(chǔ)過(guò)程。1.創(chuàng)建存儲(chǔ)過(guò)程的模板代碼可使用SSMS創(chuàng)建存儲(chǔ)過(guò)程,操作步驟略。2.創(chuàng)建存儲(chǔ)過(guò)程的CREATEPROCEDURE語(yǔ)句基本語(yǔ)法如下:CREATEPROC[EDURE]procedure_name[(@parameterdata_type[VARYING][=default][OUTPUT])][,...n][WITH]RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]ASsql_statment其中:
procedure_name指定存儲(chǔ)過(guò)程名稱。
@parameter存儲(chǔ)過(guò)程的輸入或輸出參數(shù)??梢月暶饕粋€(gè)或多個(gè)參數(shù),分為輸入?yún)?shù)和輸出參數(shù)。輸入?yún)?shù)負(fù)責(zé)向存儲(chǔ)過(guò)程帶入值,輸出參數(shù)將存儲(chǔ)過(guò)程的返回值傳遞給變量,向客戶端輸出。
OUTPUT保留字,指定參數(shù)為輸出參數(shù),其定義位于所有輸入?yún)?shù)之后。返回值是存儲(chǔ)過(guò)程執(zhí)行完成時(shí)參數(shù)的當(dāng)前值。Default為參數(shù)指定默認(rèn)值。WITHRECOMPILE重編譯選項(xiàng),表明SQLServer不會(huì)保存該存儲(chǔ)過(guò)程的執(zhí)行計(jì)劃,要求每次執(zhí)行存儲(chǔ)過(guò)程都要重新編譯和優(yōu)化,并創(chuàng)建新的查詢計(jì)劃。ENCRYPTION加密選項(xiàng)。AS指定該存儲(chǔ)過(guò)程要執(zhí)行的操作。通過(guò)使用(@)符號(hào)作為第一個(gè)字符來(lái)指定參數(shù)名,必須符合有關(guān)標(biāo)識(shí)符的規(guī)則。一個(gè)存儲(chǔ)過(guò)程最多可定義2,100個(gè)參數(shù)創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程使用T-SQL最常用的執(zhí)行存儲(chǔ)過(guò)程的方法,是使用EXECUTE語(yǔ)句(系統(tǒng)存儲(chǔ)過(guò)程可不使用EXECUTE關(guān)鍵字)?;菊Z(yǔ)法如下:[[EXEC[UTE]]procedure_name[value_list]|[@parameter_vari1bleOUTPUT][,...n][withrecompile]其中:
①procedure_name執(zhí)行的存儲(chǔ)過(guò)程名。②value_list輸入?yún)?shù)要帶入存儲(chǔ)過(guò)程的參數(shù)值列表。③parameter_vari1bleoutput參數(shù)變量。若存儲(chǔ)過(guò)程返回一個(gè)輸出參數(shù),則把其值交給某一參數(shù)變量,帶回客戶端。④withrecompile強(qiáng)制每次運(yùn)行都先重新編譯存儲(chǔ)過(guò)程。7.3.1創(chuàng)建和執(zhí)行存儲(chǔ)過(guò)程的步驟創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.3.2創(chuàng)建和調(diào)用不帶參數(shù)的存儲(chǔ)過(guò)程根據(jù)“高職院校教學(xué)管理系統(tǒng)”中的存儲(chǔ)過(guò)程需求分析,創(chuàng)建并調(diào)用存儲(chǔ)過(guò)程來(lái)查詢學(xué)生基本信息。【例7-2】創(chuàng)建存儲(chǔ)過(guò)程proc_stu_info,要求該存儲(chǔ)過(guò)程返回學(xué)生基本信息。代碼如下:
USEJXGLGOCREATEPROCEDUREproc_stu_infoASSELECT*FROMstudent_infoGO
提示:每個(gè)存儲(chǔ)過(guò)程應(yīng)該完成一項(xiàng)單獨(dú)的工作,這也符合軟件工程的思想。為防止其他用戶看到自己所編寫(xiě)的存儲(chǔ)過(guò)程腳本,創(chuàng)建存儲(chǔ)過(guò)程時(shí)使用參數(shù)WITHENCRYPTION加密存儲(chǔ)過(guò)程的定義。創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.3.3創(chuàng)建和調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程用戶創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程,通過(guò)參數(shù)與調(diào)用程序進(jìn)行通信,輸入?yún)?shù)向該存儲(chǔ)過(guò)程傳遞值,由輸出參數(shù)將值返回至調(diào)用程序。1.創(chuàng)建和調(diào)用帶輸入?yún)?shù)的存儲(chǔ)過(guò)程【例7-3】創(chuàng)建存儲(chǔ)過(guò)程proc_stud_info2,查詢某個(gè)學(xué)生信息。USEJXGLGOCREATEPROCEDUREproc_stud_info2@s_namenvarchar(20)ASSELECT*FROMstudent_infoWHEREstud_name=@s_nameGO
其中:“N'孫晨湄'”是為輸入?yún)?shù)@s_name指定的值,它將被帶入存儲(chǔ)過(guò)程,并出現(xiàn)在應(yīng)用該參數(shù)的位置“stud_name=@s_name”,達(dá)到為字段stud_name賦值的目的。創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程2.創(chuàng)建和調(diào)用帶輸出參數(shù)的存儲(chǔ)過(guò)程在創(chuàng)建存儲(chǔ)過(guò)程中定義輸出參數(shù),使存儲(chǔ)過(guò)程返回一個(gè)或多個(gè)值?!纠?-4】創(chuàng)建存儲(chǔ)過(guò)程proc_aver_score,查詢某名學(xué)生的平均成績(jī)。CREATEPROCEDUREproc_aver_score@s_idchar(10),@aver_scorenumeric(5,2)OUTPUTASSELECT@aver_score=avg(grade)FROMstudent_gradeWHEREstud_id=@s_idGO7.3.3創(chuàng)建和調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程調(diào)用以上存儲(chǔ)過(guò)程,代碼如下:DECLARE@sidchar(10)--定義參數(shù)變量DECLARE@averscorenumeric(5,2)--定義參數(shù)變量SET@sid='D06010209'--為參數(shù)變量賦值--將參數(shù)變量@sid的值傳遞給輸入?yún)?shù),指定參數(shù)變量@averscore將輸出參數(shù)的值帶回客戶端EXECproc_aver_score@sid,@averscoreOUTPUTPRINT N'學(xué)號(hào)為'+CONVERT(CHAR(10),@sid)+ N'的同學(xué)的平均成績(jī)是:'+CONVERT(char(10),@averscore)
其中:PRINT語(yǔ)句只能輸出字符串,因此在該例中使用轉(zhuǎn)換函數(shù)CONVERT()將數(shù)字轉(zhuǎn)換為字符輸出。7.3.3創(chuàng)建和調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程【例7-5】創(chuàng)建存儲(chǔ)過(guò)程aaddb,實(shí)現(xiàn)求任意兩個(gè)整數(shù)的和。代碼如下:CREATEPROCEDUREaaddb@aINT,@bINT,@cINTOUTPUTASSELECT@c=@a+@bGO執(zhí)行以下代碼調(diào)用存儲(chǔ)過(guò)程aaddb。DECLARE@aINTDECLARE@bINTDECLARE@cINTSET@a=130SET@b=6SET@c=50EXECaaddb@a,@b,@cOUTPUTPRINTCONVERT(CHAR(5),@a)+N'與'+CONVERT(CHAR(5),@b)+N'的和等于:'+CONVERT(CHAR(5),@c)GO
其中:在PRIINT語(yǔ)句中的@a、@b、@c均指參數(shù)變量,而非存儲(chǔ)過(guò)程參數(shù)。7.3.3創(chuàng)建和調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4管理存儲(chǔ)過(guò)程任務(wù):使用SSMS及T-SQL兩種方法,管理存儲(chǔ)過(guò)程或重新編譯存儲(chǔ)過(guò)程。創(chuàng)建“高職院校教學(xué)管理系統(tǒng)”需要的存儲(chǔ)過(guò)程。7.4.1查看、修改和刪除存儲(chǔ)過(guò)程7.4.2重新編譯存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.1查看、修改和刪除存儲(chǔ)過(guò)程1.查看存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程被創(chuàng)建以后,它的名字存放在當(dāng)前數(shù)據(jù)庫(kù)的系統(tǒng)表sysobjects中,源代碼存放在系統(tǒng)表syscomments中。(1)通過(guò)系統(tǒng)存儲(chǔ)過(guò)程查看用戶存儲(chǔ)過(guò)程。使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptext查看未加密的存儲(chǔ)過(guò)程的源代碼?;菊Z(yǔ)法如下:
sp_helptext[@objname=]'name‘使用系統(tǒng)存儲(chǔ)過(guò)程sp_help可以查看相關(guān)存儲(chǔ)過(guò)程的信息?;菊Z(yǔ)法如下:sp_helpproc_name
(2)使用SSMS查看存儲(chǔ)過(guò)程,操作步驟略。創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.1查看、修改和刪除存儲(chǔ)過(guò)程2.修改存儲(chǔ)過(guò)程兩種方法:一種是把舊的存儲(chǔ)過(guò)程刪除,然后重新創(chuàng)建該存儲(chǔ)過(guò)程;另一種是用單個(gè)的步驟修改存儲(chǔ)過(guò)程,如更改存儲(chǔ)過(guò)程或參數(shù)定義,但該存儲(chǔ)過(guò)程定義的權(quán)限將保留。(1)使用T-SQL語(yǔ)句修改存儲(chǔ)過(guò)程。使用ALTERPROCEDURE語(yǔ)句修改已經(jīng)創(chuàng)建的存儲(chǔ)過(guò)程,不會(huì)更改權(quán)限,也不影響相關(guān)的存儲(chǔ)過(guò)程或觸發(fā)器。
ALTERPROC[EDURE]procedure_name[(@parameterdata_type[VARYING][=default][OUTPUT])][,...n][WITH]RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]ASsql_statment創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程3.刪除存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程可以使用SQL語(yǔ)句,也可以使用SSMS來(lái)完成。(1)使用SQL語(yǔ)句刪除存儲(chǔ)過(guò)程。使用DROPPROCEDUR語(yǔ)句從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程,基本語(yǔ)法如下:DROPPROCEDUREprocedure_name[,…n]執(zhí)行代碼:DROPPROCaaddb,proc_stud_info。將存儲(chǔ)過(guò)程aaddb和proc_stud_info一起刪除。再次刷新“存儲(chǔ)過(guò)程”節(jié)點(diǎn)時(shí),這兩個(gè)存儲(chǔ)過(guò)程在存儲(chǔ)過(guò)程列表中已不再存在。(2)使用SSMS刪除存儲(chǔ)過(guò)程,操作步驟略。7.4.1查看、修改和刪除存儲(chǔ)過(guò)程創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.2重新編譯存儲(chǔ)過(guò)程為使存儲(chǔ)過(guò)程能夠根據(jù)數(shù)據(jù)庫(kù)的改變重新變化,要求SQLServer在每次執(zhí)行存儲(chǔ)過(guò)程時(shí)都對(duì)它重新編譯。1.創(chuàng)建存儲(chǔ)過(guò)程時(shí)設(shè)置重編譯選項(xiàng)
CREATEPROCEDURE...[WITHRECOMPILE]
在每次執(zhí)行時(shí),SQLServer都對(duì)該存儲(chǔ)過(guò)程重新編譯和優(yōu)化,并創(chuàng)建新的查詢計(jì)劃。【例7-6】為JXGL數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)帶重編譯選項(xiàng)的存儲(chǔ)過(guò)程,用于查詢某學(xué)生的成績(jī)信息。代碼如下:
CREATEPROCproc_stud_course@s_idchar(10)WITHRECOMPILEASSELECT*FROMstudent_gradeWHEREstud_id=@s_id創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.2重新編譯存儲(chǔ)過(guò)程為使存儲(chǔ)過(guò)程能夠根據(jù)數(shù)據(jù)庫(kù)的改變重新變化,要求SQLServer在每次執(zhí)行存儲(chǔ)過(guò)程時(shí)都對(duì)它重新編譯。1.創(chuàng)建存儲(chǔ)過(guò)程時(shí)設(shè)置重編譯選項(xiàng)
CREATEPROCEDURE...[WITHRECOMPILE]
在每次執(zhí)行時(shí),SQLServer都對(duì)該存儲(chǔ)過(guò)程重新編譯和優(yōu)化,并創(chuàng)建新的查詢計(jì)劃?!纠?-6】為JXGL數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)帶重編譯選項(xiàng)的存儲(chǔ)過(guò)程,用于查詢某學(xué)生的成績(jī)信息。代碼如下:
CREATEPROCproc_stud_course@s_idchar(10)WITHRECOMPILEASSELECT*FROMstudent_gradeWHEREstud_id=@s_id創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.2重新編譯存儲(chǔ)過(guò)程2.執(zhí)行存儲(chǔ)過(guò)程時(shí)重編譯在EXECUTE中使用WITHRECOMPILE選項(xiàng),執(zhí)行存儲(chǔ)過(guò)程時(shí),先重新編譯?;菊Z(yǔ)法如下:EXECUTEprocedure_name[parameter][WITHRECOMPILE]【例7-7】帶重新編譯選項(xiàng)執(zhí)行存儲(chǔ)過(guò)程proc_aver_score,查詢某同學(xué)的平均成績(jī)。DECLARE@sidchar(10)DECLARE@averscorenumeric(5,2)SET@sid='D06010209'EXECproc_aver_score@sid,@averscoreOUTPUTWITHRECOMPILEPRINTN'學(xué)號(hào)為'+CONVERT(CHAR(10),@sid)+N'的同學(xué)的平均成績(jī)是:'+CONVERT(char(10),@averscore)創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.4.2重新編譯存儲(chǔ)過(guò)程3.使用sp_recompile系統(tǒng)存儲(chǔ)過(guò)程指定表的存儲(chǔ)過(guò)程進(jìn)行重編譯?;菊Z(yǔ)法如下:
sp_recompiletable_name如EXECsp_recompilestudent_info,將強(qiáng)制表student_info的所有存儲(chǔ)過(guò)程在下一次運(yùn)行時(shí)重新編譯創(chuàng)建和應(yīng)用存儲(chǔ)過(guò)程7.5知識(shí)進(jìn)階任務(wù):認(rèn)識(shí)擴(kuò)展存儲(chǔ)過(guò)程的概念,以及如何注冊(cè)擴(kuò)展存儲(chǔ)過(guò)程到SQL
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保暖手套捐贈(zèng)合同
- 河南省住宅公房出租合同
- 歌手藝人經(jīng)紀(jì)合同
- 防雷工程服務(wù)合同
- 二零二四年度藥品不良反應(yīng)監(jiān)測(cè)與醫(yī)療器械安全報(bào)告合同3篇
- 二零二四年度冶金工程綠色施工合同擔(dān)保協(xié)議3篇
- 二零二五年度網(wǎng)絡(luò)傳媒公司內(nèi)容創(chuàng)作者合同4篇
- 金融服務(wù)居間介紹合同范本
- 2025版旅游行業(yè)員工勞動(dòng)合同范本3篇
- 大數(shù)據(jù)平臺(tái)建設(shè)運(yùn)營(yíng)合同
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 人教版初中語(yǔ)文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩(shī)詞名篇名句默寫(xiě)
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績(jī)效的影響研究
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 2023-2024年同等學(xué)力經(jīng)濟(jì)學(xué)綜合真題及參考答案
- 農(nóng)村集體土地使用權(quán)轉(zhuǎn)讓協(xié)議
- 2024年高考全國(guó)甲卷英語(yǔ)試卷(含答案)
評(píng)論
0/150
提交評(píng)論