




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQLServer2005數(shù)據(jù)庫(kù)程序設(shè)計(jì)第10章存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程在SQLServer中,存儲(chǔ)過(guò)程既子程序就是將常用的或復(fù)雜的工作,預(yù)先用SQL語(yǔ)句寫(xiě)好并用指定的名稱存儲(chǔ)起來(lái)。用EXECUTE執(zhí)行。存儲(chǔ)過(guò)程是存儲(chǔ)在服務(wù)器上的T-SQL語(yǔ)句的命名集合是封裝重復(fù)性任務(wù)的方法支持用戶聲明變量、條件執(zhí)行以及其他強(qiáng)有力的編程特性10.1存儲(chǔ)過(guò)程概述SQLServer中的存儲(chǔ)過(guò)程可以包含執(zhí)行數(shù)據(jù)庫(kù)操作(包括調(diào)用其他過(guò)程)的編程語(yǔ)句接受輸入?yún)?shù)向調(diào)用過(guò)程或批處理返回狀態(tài)值,以表明成功或失?。ㄒ约笆≡颍┮暂敵鰠?shù)的形式將多個(gè)值返回至調(diào)用過(guò)程或批處理10.1存儲(chǔ)過(guò)程概述存儲(chǔ)過(guò)程------------------------單個(gè)SELECT語(yǔ)句SELECT語(yǔ)句塊SELECT語(yǔ)句與邏輯控制語(yǔ)句可以包含存儲(chǔ)過(guò)程可以包含數(shù)據(jù)操縱語(yǔ)句、變量、邏輯控制語(yǔ)句等10.1存儲(chǔ)過(guò)程概述10.1存儲(chǔ)過(guò)程概述在SQLServer2005中,按編寫(xiě)的語(yǔ)言,存儲(chǔ)過(guò)程有兩種類型:T-SQL或CLR。T-SQL(SQLServer的存儲(chǔ)過(guò)程):T-SQL存儲(chǔ)過(guò)程是指保存的T-SQL語(yǔ)句集合。CLR:是指對(duì).NET公共語(yǔ)言運(yùn)行時(shí)(CLR)方法的引用。SQLServer支持的T-SQL存儲(chǔ)過(guò)程系統(tǒng)存儲(chǔ)過(guò)程(sp_):存儲(chǔ)在master數(shù)據(jù)庫(kù)內(nèi),以“sp_”前綴標(biāo)識(shí)本地存儲(chǔ)過(guò)程:在單獨(dú)的用戶數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建臨時(shí)存儲(chǔ)過(guò)程:可能是局部的,名稱以“#”開(kāi)頭;也可能是全局的,名稱以“##”開(kāi)頭遠(yuǎn)程存儲(chǔ)過(guò)程:是指從遠(yuǎn)程服務(wù)器上調(diào)用的存儲(chǔ)過(guò)程,分布式查詢支持這項(xiàng)功能擴(kuò)展存儲(chǔ)過(guò)程(sp_或xp_):在SQLServer環(huán)境外執(zhí)行10.1存儲(chǔ)過(guò)程概述關(guān)于系統(tǒng)存儲(chǔ)過(guò)程的前綴sp_所有的系統(tǒng)存儲(chǔ)過(guò)程的名字都以sp_開(kāi)頭任何創(chuàng)建在master數(shù)據(jù)庫(kù)中的以“sp_”開(kāi)頭的存儲(chǔ)過(guò)程都可以在其他數(shù)據(jù)庫(kù)中被直接調(diào)用而不需要用數(shù)據(jù)庫(kù)名完全引用,不必使用完全合法名稱10.1存儲(chǔ)過(guò)程概述執(zhí)行擴(kuò)展存儲(chǔ)過(guò)程常用的擴(kuò)展存儲(chǔ)過(guò)程例:execxp_cmdshell'dird:\'EXECsp_configure'showadvancedoption','1';RECONFIGURE;EXECsp_configure'xp_cmdshell','1';RECONFIGURE;使用存儲(chǔ)過(guò)程的優(yōu)點(diǎn):只在創(chuàng)造時(shí)進(jìn)行編譯,執(zhí)行速度快提高系統(tǒng)性能確保數(shù)據(jù)庫(kù)的安全自動(dòng)完成需要預(yù)先執(zhí)行的任務(wù)可重復(fù)使用,可減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量10.1存儲(chǔ)過(guò)程概述創(chuàng)建存儲(chǔ)過(guò)程只能在當(dāng)前數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建存儲(chǔ)過(guò)程,除了臨時(shí)存儲(chǔ)過(guò)程。臨時(shí)存儲(chǔ)過(guò)程總是創(chuàng)建在tempdb數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程可以引用表、視圖、用戶定義函數(shù)、其他存儲(chǔ)過(guò)程以及臨時(shí)表若存儲(chǔ)過(guò)程創(chuàng)建了局部臨時(shí)表,則當(dāng)存儲(chǔ)過(guò)程執(zhí)行結(jié)束后臨時(shí)表消失權(quán)限10.1存儲(chǔ)過(guò)程概述存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程10.2設(shè)計(jì)存儲(chǔ)過(guò)程用戶可以設(shè)計(jì)自己的存儲(chǔ)過(guò)程,以提高業(yè)務(wù)邏輯使用的通用性。設(shè)計(jì)存儲(chǔ)過(guò)程通常應(yīng)該遵循以下原則:存儲(chǔ)過(guò)程名稱避免使用sp的前綴盡量不使用臨時(shí)存儲(chǔ)過(guò)程。CREATE/ALTERPROCEDURE必須是批處理的第一個(gè)語(yǔ)句。使用CREATEPROCEDURE定義SQL語(yǔ)句集合(不能使用下表中的語(yǔ)句):10.2設(shè)計(jì)存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程10.3.1在SQLServerManagementStudio中建立存儲(chǔ)過(guò)程用戶可以使用SQLServerManagementStudio工具建立存儲(chǔ)過(guò)程10.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程只能在當(dāng)前數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建存儲(chǔ)過(guò)程,除了臨時(shí)存儲(chǔ)過(guò)程。臨時(shí)存儲(chǔ)過(guò)程總是創(chuàng)建在tempdb數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程可以引用表、視圖、用戶定義函數(shù)、其他存儲(chǔ)過(guò)程以及臨時(shí)表若存儲(chǔ)過(guò)程創(chuàng)建了局部臨時(shí)表,則當(dāng)存儲(chǔ)過(guò)程執(zhí)行結(jié)束后臨時(shí)表消失USENorthwindGOCREATEPROCdbo.OverdueOrdersASSELECT*FROMdbo.OrdersWHERERequiredDate<GETDATE()ANDShippedDateISNull語(yǔ)法CREATEPROC[EDURE][schema_name.]proceduce_name[;number]/*定義存儲(chǔ)過(guò)程名,number對(duì)同名的過(guò)程分組*/[{@parameterdata_type}/*定義參數(shù)類型[VARYING][=default][OUT[PUT]]/*定義參數(shù)屬性[,…n][WITH{RECOMPILE|ENCRYPTION}]/*定義存儲(chǔ)過(guò)程的處理方式ASsql_statement[…n]/*執(zhí)行的操作10.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程注釋:存儲(chǔ)過(guò)程名必須符合標(biāo)識(shí)符規(guī)則。Number為可選參數(shù),用于區(qū)分同名的存儲(chǔ)過(guò)程@parameter為存儲(chǔ)過(guò)程的形參,data_type指定數(shù)據(jù)類型Default指定存儲(chǔ)過(guò)程輸入?yún)?shù)的默認(rèn)值,OUTPUT指定參數(shù)從存儲(chǔ)過(guò)程的返回信息。RECOMPILE表明每次運(yùn)行該過(guò)程,將對(duì)其重新編譯,ENCRYPTION對(duì)包含創(chuàng)建存儲(chǔ)過(guò)程的文本加密。sql_statement代表過(guò)程體包含的T-SQL語(yǔ)句10.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程--示例:使用帶有復(fù)雜SELECT語(yǔ)句的簡(jiǎn)單過(guò)程--下面的存儲(chǔ)過(guò)程從四個(gè)表的聯(lián)接中返回所有作者、出版的書(shū)籍以及出版社。該存儲(chǔ)過(guò)程不使用任何參數(shù)。USEpubsifobject_id('au_info_all','P')isnotnull DROPPROCEDUREau_info_allGOCREATEPROCEDUREau_info_allASSELECTau_lname,au_fname,title,pub_nameFROMauthorsaINNERJOINtitleauthortaONa.au_id=ta.au_idINNERJOINtitlestONt.title_id=ta.title_idINNERJOINpublisherspONt.pub_id=p.pub_id查看存儲(chǔ)過(guò)程的信息查看所有類型存儲(chǔ)過(guò)程的額外信息系統(tǒng)存儲(chǔ)過(guò)程sp_help、sp_helptext、sp_depends顯示數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程以及擁有者名字的列表系統(tǒng)存儲(chǔ)過(guò)程sp_stored_procedures得到存儲(chǔ)過(guò)程的信息查詢系統(tǒng)視圖sys.sysobjects、sys.syscomments、sys.sysdepends10.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程嵌套存儲(chǔ)過(guò)程:一個(gè)存儲(chǔ)過(guò)程調(diào)用另一個(gè)存儲(chǔ)過(guò)程可以嵌套32層。若試圖超過(guò)32層嵌套,則整個(gè)存儲(chǔ)過(guò)程調(diào)用鏈?zhǔn)‘?dāng)前的嵌套層數(shù)存儲(chǔ)在系統(tǒng)函數(shù)@@nestlevel中若一個(gè)存儲(chǔ)過(guò)程調(diào)用了第二個(gè)存儲(chǔ)過(guò)程,那么第二個(gè)存儲(chǔ)過(guò)程可以訪問(wèn)第一個(gè)存儲(chǔ)過(guò)程創(chuàng)建的所有對(duì)象,包括臨時(shí)表嵌套的存儲(chǔ)過(guò)程可以遞歸調(diào)用。10.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程CREATEPROCEDUREinnerprocasselect@@NESTLEVELAS'InnerLevel'示例1CREATEPROCEDUREouterprocasselect@@NESTLEVELAS'OuterLevel'EXECinnerproc示例210.3.2用CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程重命名存儲(chǔ)過(guò)程重命名存儲(chǔ)過(guò)程sp_renameoldname,newname限定存儲(chǔ)過(guò)程所引用的對(duì)象名稱創(chuàng)建存儲(chǔ)過(guò)程的準(zhǔn)則ü每個(gè)任務(wù)創(chuàng)建一個(gè)存儲(chǔ)過(guò)程ü創(chuàng)建,測(cè)試存儲(chǔ)過(guò)程,并對(duì)其進(jìn)行故障診斷ü存儲(chǔ)過(guò)程名稱避免使用sp_前綴
ü盡可能減少臨時(shí)存儲(chǔ)過(guò)程的使用
ü存儲(chǔ)過(guò)程的參數(shù)分兩種:輸入?yún)?shù)輸出參數(shù)輸入?yún)?shù):用于向存儲(chǔ)過(guò)程傳入值,類似C語(yǔ)言的按值傳遞;輸出參數(shù):用于在調(diào)用存儲(chǔ)過(guò)程后,返回結(jié)果,類似C語(yǔ)言的按引用傳遞;intsum(inta,intb){ints;s=a+b;returns;}c=sum(5,8)傳入?yún)?shù)值返回結(jié)果存儲(chǔ)過(guò)程的參數(shù)輸入?yún)?shù)允許傳遞信息到存儲(chǔ)過(guò)程內(nèi)在CREATEPROCEDURE中指定@參數(shù)名數(shù)據(jù)類型[=默認(rèn)值]指定參數(shù)的原則所有的輸入?yún)?shù)值都應(yīng)在存儲(chǔ)過(guò)程開(kāi)始時(shí)進(jìn)行檢查,以盡早捕獲缺失值和非法值的情況應(yīng)為參數(shù)提供合適的默認(rèn)值。若定義了默認(rèn)值,用戶可以在未指定參數(shù)值的基礎(chǔ)上執(zhí)行存儲(chǔ)過(guò)程參數(shù)對(duì)存儲(chǔ)過(guò)程而言是局部的。輸入?yún)?shù)輸入?yún)?shù)示例:CREATEPROCProduction.LongLeadProducts@MinimumLengthintASIF(@MinimumLength<0)
BEGIN
RAISERROR('Invalidleadtime.',14,1)
RETURN
ENDSELECT Name,ProductNumber,DaysToManufactureFROM Production.ProductWHERE DaysToManufacture>=@MinimumLengthORDERBYDaysToManufactureDESC,NameEXECProduction.LongLeadProducts@MinimumLength=4CREATEPROCEDUREdbo.GetProducts2@namevarchar(50)ASSELECT*FROMProduction.ProductWHEREName=@name輸入?yún)?shù)示例:以下執(zhí)行語(yǔ)句均正確execGetProducts2'HexNut22'execGetProducts2@name='HexNut22'GetProducts2'HexNut22'輸入?yún)?shù)通過(guò)參數(shù)名傳遞值在EXECUTE語(yǔ)句中以“@參數(shù)名=值”的格式指定參數(shù)稱為通過(guò)參數(shù)名傳遞當(dāng)通過(guò)參數(shù)名傳遞值時(shí),可以以任何順序指定參數(shù)值,并且可以省略允許空值或具有默認(rèn)值的參數(shù)若定義了參數(shù)的默認(rèn)值,當(dāng)調(diào)用存儲(chǔ)過(guò)程時(shí),參數(shù)課未指定值或者參數(shù)的值指定為DEFAULT關(guān)鍵字輸入?yún)?shù)輸入?yún)?shù)提供合適的默認(rèn)值,驗(yàn)證輸入?yún)?shù)值,包括空值檢查CREATEPROCProduction.LongLeadProducts@MinimumLengthint=1 --defaultvalueASIF(@MinimumLength<0) --validate
BEGIN
RAISERROR('Invalidleadtime.',14,1)
RETURN
ENDSELECT Name,ProductNumber,DaysToManufactureFROM Production.ProductWHERE DaysToManufacture>=@MinimumLengthORDERBYDaysToManufactureDESC,NameEXECProduction.LongLeadProducts通過(guò)位置傳遞參數(shù)只傳遞值(而沒(méi)有對(duì)被傳值參數(shù)的引用)稱為通過(guò)位置傳遞參數(shù)值必須以參數(shù)在CREATEPROCEDURE語(yǔ)句中的定義順序列出可以忽略有默認(rèn)值的參數(shù),但不能中斷次序輸入?yún)?shù)CREATEPROCEDUREdbo.[sum1]@aint,@bintASDECLARE@sumintSET@sum=@a+@bprint@sum輸入?yún)?shù)以下方式執(zhí)行均可:exec[sum1]@a=1,@b=2exec[sum1]@b=2,@a=1exec[sum1]1,2CREATEPROCEDUREdbo.[yeartoyearsales]@beginningdatedatetime,@endingdatedatetimeASIF@beginningdateISNULLOR@endingdateISNULLBEGINRAISERROR(‘NULLvaluearenotallowed’,14,1)RETURNENDSELECTO.Shippeddate,O.Orderid,OS.Subtotal,DATENAME(yy,Shippeddate)ASyearFROMORDERSOINNERJOIN[OrderSubtotals]OSONO.Orderid=OS.OrderidWHEREO.ShippeddateBETWEEN@beginningdateAND@endingdate輸入?yún)?shù)輸出參數(shù):以O(shè)UTPUT關(guān)鍵字指定的變量存儲(chǔ)過(guò)程通過(guò)輸出參數(shù)向調(diào)用它的存儲(chǔ)過(guò)程或客戶端返回信息通過(guò)輸出參數(shù),存儲(chǔ)過(guò)程的運(yùn)行結(jié)果可以得到保留,即使存儲(chǔ)過(guò)程運(yùn)行結(jié)束輸出參數(shù)的特性調(diào)用語(yǔ)句必須包含一個(gè)變量名,以接受返回值。不能傳遞常數(shù)可以在隨后的Transact-SQL語(yǔ)句中使用返回變量輸出參數(shù)和返回值CREATEPROCEDUREdbo.[sum]@aint,@bint,@sumintOUTPUTASSET@sum=@a+@b示例DECLARE@answerintexec[sum]1,2,@answerOUTPUTselect@answer輸出參數(shù)和返回值DECLARE@answerintexec[sum]@a=1,@b=2,@sum=@answerOUTPUTselect@answerCREATEPROCHumanResources.AddDepartment@Namenvarchar(50),@GroupNamenvarchar(50),@DeptIDsmallintOUTPUTASINSERTINTOHumanResources.Department(Name,GroupName)VALUES (@Name,@GroupName)SET@DeptID=SCOPE_IDENTITY()輸出參數(shù)和返回值CREATEPROCHumanResources.AddDepartment@Namenvarchar(50),@GroupNamenvarchar(50),@DeptIDsmallintOUTPUTASIF((@Name='')OR(@GroupName=''))RETURN-1INSERTINTOHumanResources.Department(Name,GroupName)VALUES (@Name,@GroupName)SET@DeptID=SCOPE_IDENTITY()RETURN0DECLARE@deptintEXECAddDepartment'Refunds','',@deptOUTPUTSELECT@deptDECLARE@deptint,@resultintEXEC@result=AddDepartment'Refunds','',@deptOUTPUTIF(@result=0) SELECT@deptELSE SELECT'Errorduringinsert'顯式地重新編譯存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程可以顯式地重新編譯。顯式重新編譯過(guò)程的方法CREATEPROCEDURE[WITHRECOMPILE]創(chuàng)建存儲(chǔ)過(guò)程時(shí)在其定義中指定WITHRECOMPILE選項(xiàng),表明SQLServer將不對(duì)該存儲(chǔ)過(guò)程計(jì)劃進(jìn)行高速緩存,該存儲(chǔ)過(guò)程將在每次執(zhí)行時(shí)都重新編譯EXECUTE[WITHRECOMPILE]在執(zhí)行存儲(chǔ)過(guò)程時(shí)指定WITHRECOMPILE選項(xiàng),可強(qiáng)制對(duì)存儲(chǔ)過(guò)程進(jìn)行重新編譯--示例:使用WITHRECOMPILE選項(xiàng)--如果為過(guò)程提供的參數(shù)不是典型的參數(shù),并且新的執(zhí)行計(jì)劃不應(yīng)高速緩存或存儲(chǔ)在內(nèi)存中,WITHRECOMPILE子句會(huì)很有幫助。USEpubsGOCREATEPROCEDUREtitles_by_author@@LNAME_PATTERNvarchar(30)='%'WITHRECOMPILEASSELECTRTRIM(au_fname)+''+RTRIM(au_lname)AS'Authorsfullname',titleASTitleFROMauthorsaINNERJOINtitleauthortaONa.au_id=ta.au_idINNERJOINtitlestONta.title_id=t.title_idWHEREau_lnameLIKE@@LNAME_PATTERN創(chuàng)建對(duì)用戶隱藏存儲(chǔ)過(guò)程文本的存儲(chǔ)過(guò)程encrypt_this:檢索authors的所有內(nèi)容。(提示:WITHENCRYPTION選項(xiàng))練習(xí)41精選PPTUSEpubsGOCREATEPROCEDUREencrypt_thisWITHENCRYPTIONASSELECT*FROMauthors練習(xí)——答案42精選PPT創(chuàng)建一個(gè)更新雇員電話號(hào)碼的存儲(chǔ)過(guò)程,電話號(hào)碼保存在表Employees中,要求執(zhí)行存儲(chǔ)過(guò)程時(shí),可將指定的雇員的電話號(hào)碼改成新的號(hào)碼。練習(xí)43精選PPT練習(xí)——答案CREATEPROCEDUREUpdateEmployeePhone (@EmployeeID_1int, @HomePhone_2 nvarchar(24))ASUPDATENorthwind.dbo.EmployeesSETHomePhone =@HomePhone_2WHEREEmployeeID=@EmployeeID_144精選PPT練習(xí)——答案創(chuàng)建后執(zhí)行存儲(chǔ)過(guò)程驗(yàn)證。EXECUpdateEmployeePhone@EmployeeID_1=6,@HomePhone_2=’(206)-555-7773’45精選PPT練習(xí)創(chuàng)建一個(gè)名為FindCustomer1的存儲(chǔ)過(guò)程,可以用它來(lái)找出SQLSERVER中的northwind數(shù)據(jù)庫(kù)的Customer表中,CustomerID為指定值(輸入?yún)?shù))的記錄的ContactName字段的名稱,另外指定一個(gè)輸出參數(shù)LineNum做為輸出參數(shù),還有必須在存儲(chǔ)過(guò)程中判斷CustomerID不能為空串,是的話要打印出出錯(cuò)信息,并返回錯(cuò)誤值-1,如果查詢成功在輸出變量LineNum中保留選出的行數(shù),然后返回值0。寫(xiě)出相應(yīng)的SQL語(yǔ)句.46精選PPT練習(xí)——答案CREATEPROCFindCustomer@LineNumintOUTPUT,@CustomerIDchar(5)ASIFLEN(@CustomerID)=0BEGINPRINT'YoumustsupplyavalidCustomerID'RETURN-1ENDSELECTcontactNameFromCustomersWHERECustomerID=@CustomerIDSET@LineNum=@@ROWCOUNTRETURN047精選PPT練習(xí)——答案執(zhí)行過(guò)程一:declare@LineNumintexecFindCustomer@LineNumOUTPUT,'ALFKI'select@LineNum執(zhí)行過(guò)程二:DECLARE@LineNumint,@resultintEXEC@result=FindCustome@LineNumOUTPUT,'ALFKIIF(@result=0) SELECT@LineNumELSE SELECT'ErrorCustomerID'48精選PPT存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程USENorthwindGOALTERPROCdbo.OverdueOrdersASSELECTCONVERT(char(8),RequiredDate,1)RequiredDate,CONVERT(char(8),OrderDate,1)OrderDate,OrderID,CustomerID,EmployeeIDFROMOrdersWHERERequiredDate<GETDATE()ANDShippedDateISNullORDERBYRequiredDateGO10.4修改存儲(chǔ)過(guò)程語(yǔ)法ALTERPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]ASsql_statement[...n]10.4修改存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程的注意事項(xiàng)若想修改帶選項(xiàng)創(chuàng)建的存儲(chǔ)過(guò)程,例如WITHENCRYPTION選項(xiàng),則必須在ALTERPROCEDURE語(yǔ)句中包括那些選項(xiàng),以保留選項(xiàng)的功能ALTERPROCEDURE語(yǔ)句只更改單個(gè)表,不影響嵌套的存儲(chǔ)過(guò)程ALTERPROCEDURE權(quán)限10.4修改存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程的兩種執(zhí)行方法;1)單獨(dú)執(zhí)行存儲(chǔ)過(guò)程(EXECUTE)2)作為INSERT語(yǔ)句的一部分執(zhí)行存儲(chǔ)過(guò)程10.5執(zhí)行存儲(chǔ)過(guò)程1)單獨(dú)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)法:[[EXEC[UTE]]{[@返回狀態(tài)=]{存儲(chǔ)過(guò)程名[;編號(hào)]|
@存儲(chǔ)過(guò)程名稱變量}[[@參數(shù)=]{值|@變量[OUTPUT]|[DEFAULT]][,...n][WITHRECOMPILE]例如:EXECOverdueOrders10.5執(zhí)行存儲(chǔ)過(guò)程2)在INSERT語(yǔ)句內(nèi)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)法:INSERTINTO表名EXEC[UTE]……將本地或遠(yuǎn)程存儲(chǔ)過(guò)程返回的結(jié)果集插入本地表中在INSERT語(yǔ)句內(nèi)執(zhí)行的存儲(chǔ)過(guò)程必須返回關(guān)系結(jié)果集10.5執(zhí)行存儲(chǔ)過(guò)程createprocinsert_procasselect*fromstudentwherestu_sex='女‘執(zhí)行:insertintogirl_studentexecinsert_proc存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程10.6刪除存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程語(yǔ)法:DROPPROCEDURE{存儲(chǔ)過(guò)程名}[,...n]刪除存儲(chǔ)過(guò)程的注意事項(xiàng)在刪除存儲(chǔ)過(guò)程之前,執(zhí)行sp_depends檢查是否有對(duì)象依賴于此存儲(chǔ)過(guò)程DROPPROCProduction.LongLeadProducts存儲(chǔ)過(guò)程概述設(shè)計(jì)存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程修改存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程刪除存儲(chǔ)過(guò)程常用系統(tǒng)存儲(chǔ)過(guò)程建立CLR存儲(chǔ)過(guò)程第10章存儲(chǔ)過(guò)程10.7常
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第17課 明朝的滅亡和清朝的建立 教案2024-2025學(xué)年七年級(jí)歷史下冊(cè)新課標(biāo)
- “房地產(chǎn)主要的宣傳渠道及各種渠道效果”的調(diào)研調(diào)查問(wèn)卷
- 湖北省武漢市江岸區(qū)2024-2025學(xué)年高三(上)期末生物試卷(含解析)
- 北京市朝陽(yáng)區(qū)北京中學(xué)2023-2024學(xué)年高二下學(xué)期期中考試語(yǔ)文試題
- 樓頂廣告施工方案
- 隧道集水坑施工方案
- 箱梁混凝土施工方案
- 2025年8d考核試題及答案
- 6年級(jí)數(shù)學(xué)手抄報(bào)題材
- 玻璃厚度幕墻施工方案
- 中電朝陽(yáng)250兆瓦智慧風(fēng)儲(chǔ)一體化風(fēng)電項(xiàng)目環(huán)評(píng)報(bào)告書(shū)
- 青島版科學(xué)一年級(jí)下冊(cè)《塑料》教學(xué)設(shè)計(jì)
- 專利文件撰寫(xiě)殷紅梅課件
- 做一個(gè)幸福教師
- 中鐵集團(tuán)工程有限公司人力資源績(jī)效考核暫行辦法
- 海上風(fēng)電場(chǎng)+風(fēng)機(jī)基礎(chǔ)介紹
- 國(guó)家自然科學(xué)基金申請(qǐng)標(biāo)書(shū)模板
- GB T 20219-2015 絕熱用噴涂硬質(zhì)聚氨酯泡沫塑料(高清版)
- 車間斷針記錄表
- 人人有事做事事有人做
- MT_T 693-2019-礦用無(wú)線電波透視儀通用技術(shù)條件_(高清版)
評(píng)論
0/150
提交評(píng)論