版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 第九講第九講 存儲過程的創(chuàng)建和運用存儲過程的創(chuàng)建和運用1、創(chuàng)建存儲過程、創(chuàng)建存儲過程2、執(zhí)行存儲過程、執(zhí)行存儲過程3、查看和修正存儲過程、查看和修正存儲過程4、重命名和刪除存儲過程、重命名和刪除存儲過程 本講主要內(nèi)容 存儲過程的概念SQL ServerSQL Server提供了一種方法,它可以將一些固定的提供了一種方法,它可以將一些固定的操作集中起來由操作集中起來由SQL ServerSQL Server數(shù)據(jù)庫效力器來完成,以實數(shù)據(jù)庫效力器來完成,以實現(xiàn)某個義務(wù),這種方法就是存儲過程。類似于現(xiàn)某個義務(wù),這種方法就是存儲過程。類似于DOSDOS一下的一下的批處置。存儲過程是批處置。存儲過程是S
2、QLSQL語句和可選控制流程語句的預編語句和可選控制流程語句的預編譯集合。是一種封裝反復義務(wù)操作的方法,以一個稱號譯集合。是一種封裝反復義務(wù)操作的方法,以一個稱號存儲,作為一個單元處置。存儲過程屬于效力器方軟件,存儲,作為一個單元處置。存儲過程屬于效力器方軟件,可立刻訪問數(shù)據(jù)庫可立刻訪問數(shù)據(jù)庫在在SQL ServerSQL Server中存儲過程分為兩類:即系統(tǒng)提供的中存儲過程分為兩類:即系統(tǒng)提供的存儲過程和用戶自定義的存儲過程。存儲過程和用戶自定義的存儲過程。 存儲過程存儲在數(shù)據(jù)庫內(nèi),可由運用程序經(jīng)過一個存儲過程存儲在數(shù)據(jù)庫內(nèi),可由運用程序經(jīng)過一個調(diào)用來執(zhí)行,而且充許用戶聲明變量。同時,存儲
3、過程調(diào)用來執(zhí)行,而且充許用戶聲明變量。同時,存儲過程可以接納和輸出參數(shù)、前往執(zhí)行存儲過程的形狀值,也可以接納和輸出參數(shù)、前往執(zhí)行存儲過程的形狀值,也可以嵌套調(diào)用??梢郧短渍{(diào)用。留意留意:存儲過程與函數(shù)不同,由于存儲過程并不前往存儲過程與函數(shù)不同,由于存儲過程并不前往取代其稱號的值,也不能直接在表達式中運用。取代其稱號的值,也不能直接在表達式中運用。 在在SQL Server中存儲過程分為兩類中存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶存系統(tǒng)提供的存儲過程和用戶存儲過程。系統(tǒng)過程主要存儲在儲過程。系統(tǒng)過程主要存儲在Master數(shù)據(jù)庫中,并以數(shù)據(jù)庫中,并以SP_為前綴,并且為前綴,并且系統(tǒng)存儲過程
4、主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server提供支持。經(jīng)過系統(tǒng)存儲過程,提供支持。經(jīng)過系統(tǒng)存儲過程,SQLServer中的許多管理性或信息性的活動中的許多管理性或信息性的活動:如了解數(shù)據(jù)庫對象、數(shù)據(jù)庫信息如了解數(shù)據(jù)庫對象、數(shù)據(jù)庫信息都可以被順利有效地完成。雖然這些系統(tǒng)存儲過程被放在都可以被順利有效地完成。雖然這些系統(tǒng)存儲過程被放在master數(shù)據(jù)庫數(shù)據(jù)庫中,但是仍可以在其它數(shù)據(jù)庫中對其進展調(diào)用,在調(diào)用時不用在存儲過中,但是仍可以在其它數(shù)據(jù)庫中對其進展調(diào)用,在調(diào)用時不用在存儲過程名前加上數(shù)據(jù)庫名,而且當創(chuàng)建一個新數(shù)據(jù)
5、庫時,一些系統(tǒng)存儲過程程名前加上數(shù)據(jù)庫名,而且當創(chuàng)建一個新數(shù)據(jù)庫時,一些系統(tǒng)存儲過程會在新數(shù)據(jù)庫中被自動創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完會在新數(shù)據(jù)庫中被自動創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功能成某一特定功能(如查詢用戶所需數(shù)據(jù)信息如查詢用戶所需數(shù)據(jù)信息)的存儲過程。的存儲過程。存儲過程時存放在存儲過程時存放在SQL Server中的特別快的數(shù)據(jù)庫對象,當初次運中的特別快的數(shù)據(jù)庫對象,當初次運轉(zhuǎn)存儲過程時,它按以下方式進展轉(zhuǎn)存儲過程時,它按以下方式進展:1、該過程被劃分成部件片斷。、該過程被劃分成部件片斷。2、檢查援用數(shù)據(jù)庫中其它對蒙、檢查援用數(shù)據(jù)庫中其它對蒙(表、
6、視圖等表、視圖等)的部件,確保援用的對的部件,確保援用的對象是存在的,這也被稱為分解。象是存在的,這也被稱為分解。3、一旦分解完成,該過程的名字將存放倒、一旦分解完成,該過程的名字將存放倒sysobjects表中,而創(chuàng)表中,而創(chuàng)建存儲過程的代碼存放在建存儲過程的代碼存放在syscomments表中表中4、然后編譯,并且,編譯過程中將創(chuàng)建如何運轉(zhuǎn)查詢的藍本。該、然后編譯,并且,編譯過程中將創(chuàng)建如何運轉(zhuǎn)查詢的藍本。該藍本通稱稱為常規(guī)方案或查詢樹,查詢樹存放在藍本通稱稱為常規(guī)方案或查詢樹,查詢樹存放在sysProcetlures表中。表中。5、存儲過程初次運轉(zhuǎn)時,讀出查詢方案并完全編譯成過程方案,、
7、存儲過程初次運轉(zhuǎn)時,讀出查詢方案并完全編譯成過程方案,然后運轉(zhuǎn)。這樣,節(jié)約了每次運轉(zhuǎn)存成過程的語法檢查、分解和編譯查然后運轉(zhuǎn)。這樣,節(jié)約了每次運轉(zhuǎn)存成過程的語法檢查、分解和編譯查詢樹的時間。詢樹的時間。當利用當利用SQL Server創(chuàng)建一個運用程序時,創(chuàng)建一個運用程序時,T-SQL是一種主是一種主要的編程言語。假設(shè)運用要的編程言語。假設(shè)運用T一一SQL來進展編程有兩種方法來進展編程有兩種方法:其一是在本地存儲其一是在本地存儲T-SQL程序并創(chuàng)建運用程序,向程序并創(chuàng)建運用程序,向SQL-Server發(fā)送命令米對結(jié)果進展發(fā)送命令米對結(jié)果進展T-SQL編寫的程序作為存儲編寫的程序作為存儲過程其二是
8、可以把部分用在過程其二是可以把部分用在SQL Server中,并創(chuàng)建運用程中,并創(chuàng)建運用程序來調(diào)用存儲過程,對數(shù)據(jù)結(jié)果進展處置。存儲過程可以序來調(diào)用存儲過程,對數(shù)據(jù)結(jié)果進展處置。存儲過程可以經(jīng)過接納參數(shù)向調(diào)用者前往結(jié)果集,結(jié)果集的格式由調(diào)用經(jīng)過接納參數(shù)向調(diào)用者前往結(jié)果集,結(jié)果集的格式由調(diào)用者確定者確定;前往形狀值給調(diào)用者,指明調(diào)用是勝利或是失敗前往形狀值給調(diào)用者,指明調(diào)用是勝利或是失敗:包括針對數(shù)據(jù)庫的操作語句,并且可以在一個存儲過程中包括針對數(shù)據(jù)庫的操作語句,并且可以在一個存儲過程中調(diào)用另一存儲過程。調(diào)用另一存儲過程。我們通常更偏愛于運用第二種方法,即在我們通常更偏愛于運用第二種方法,即在S
9、QL Server中運中運用存儲過程,而不是在客戶計算機上調(diào)用用存儲過程,而不是在客戶計算機上調(diào)用T一一QL編寫的一編寫的一段程序緣由在于存儲過程具有以下優(yōu)點段程序緣由在于存儲過程具有以下優(yōu)點:存儲過程的優(yōu)點可用存儲過程封裝事務(wù)規(guī)那么。一旦封裝完成,這些可用存儲過程封裝事務(wù)規(guī)那么。一旦封裝完成,這些規(guī)那么就可用于多個運用,從而有一個一致的數(shù)據(jù)接規(guī)那么就可用于多個運用,從而有一個一致的數(shù)據(jù)接口,因此,只需改動過程的功能,只需在一個地方對口,因此,只需改動過程的功能,只需在一個地方對其進展修正,而不用對每個運用都進展修正。其進展修正,而不用對每個運用都進展修正。存儲過程允許規(guī)范組件式編程存儲過程允
10、許規(guī)范組件式編程:存儲過程在被創(chuàng)存儲過程在被創(chuàng)建以后,可以在程序中被多次調(diào)用而不用重新編建以后,可以在程序中被多次調(diào)用而不用重新編寫該存儲過程的寫該存儲過程的SQL語句語句;而且數(shù)據(jù)庫專業(yè)人員而且數(shù)據(jù)庫專業(yè)人員可隨時對存儲過程進展修正,但對運用程序源代可隨時對存儲過程進展修正,但對運用程序源代碼毫無影響,由于運用程序源代碼只包含存儲過碼毫無影響,由于運用程序源代碼只包含存儲過程的調(diào)用語句,從而極大地提高了程序的可移植程的調(diào)用語句,從而極大地提高了程序的可移植性。性。存儲過程可以實現(xiàn)較快的執(zhí)行速度存儲過程可以實現(xiàn)較快的執(zhí)行速度:假設(shè)某一操作包含大假設(shè)某一操作包含大量的量的TSQL代碼或分別被多次
11、執(zhí)行,那么存儲過程要比代碼或分別被多次執(zhí)行,那么存儲過程要比批處置的執(zhí)行速度快很多。由于存儲過程是預編譯的,在批處置的執(zhí)行速度快很多。由于存儲過程是預編譯的,在初次運轉(zhuǎn)一個存儲過程時,查詢優(yōu)化器對其進展分析優(yōu)化,初次運轉(zhuǎn)一個存儲過程時,查詢優(yōu)化器對其進展分析優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行方案并給出最終被存在系統(tǒng)表中的執(zhí)行方案;而批處置的而批處置的T-SQL語句在每次運轉(zhuǎn)時都要進展編譯和優(yōu)化,因此速度相語句在每次運轉(zhuǎn)時都要進展編譯和優(yōu)化,因此速度相對要慢一些。對要慢一些。存儲過程可以減少網(wǎng)絡(luò)流量存儲過程可以減少網(wǎng)絡(luò)流量:對于同一個針對數(shù)據(jù)數(shù)據(jù)庫對于同一個針對數(shù)據(jù)數(shù)據(jù)庫對象的操作對象的操作(
12、如查詢修正如查詢修正),假設(shè)這一操作所涉及到的,假設(shè)這一操作所涉及到的T-SQL語句被組織成一存儲過程,那么當在客戶計算機上語句被組織成一存儲過程,那么當在客戶計算機上調(diào)用該存儲過程時,網(wǎng)絡(luò)中傳送的只是該調(diào)用語句調(diào)用該存儲過程時,網(wǎng)絡(luò)中傳送的只是該調(diào)用語句;否那否那么將是多條么將是多條SQL語句,從而大大添加了網(wǎng)絡(luò)流量,降低語句,從而大大添加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負載。網(wǎng)絡(luò)負載。存儲過程可被作為一種平安機制來充分利用存儲過程可被作為一種平安機制來充分利用:系統(tǒng)管理員系統(tǒng)管理員經(jīng)過對執(zhí)行某一存儲過程的權(quán)限進展限制,從而可以實經(jīng)過對執(zhí)行某一存儲過程的權(quán)限進展限制,從而可以實現(xiàn)對相應(yīng)的數(shù)據(jù)訪問權(quán)限的限
13、制,防止非授權(quán)用戶對數(shù)現(xiàn)對相應(yīng)的數(shù)據(jù)訪問權(quán)限的限制,防止非授權(quán)用戶對數(shù)據(jù)的訪問,保證數(shù)據(jù)的平安。據(jù)的訪問,保證數(shù)據(jù)的平安。創(chuàng)建存儲過程的規(guī)那么幾乎任何可以寫成批處置的幾乎任何可以寫成批處置的T一一SQL代碼都可用于創(chuàng)建代碼都可用于創(chuàng)建存儲過程,但是在設(shè)計存儲過程時,需求遵照以下規(guī)那存儲過程,但是在設(shè)計存儲過程時,需求遵照以下規(guī)那么么:名字必需符合名字必需符合SQL Server命名規(guī)那么。命名規(guī)那么。援用的對象必需在創(chuàng)建存儲過程前就存在援用的對象必需在創(chuàng)建存儲過程前就存在不能在單個存儲過程中創(chuàng)建后去掉或再創(chuàng)建同名的對象。不能在單個存儲過程中創(chuàng)建后去掉或再創(chuàng)建同名的對象。存儲過程最后能有存儲過程
14、最后能有255各參數(shù)。各參數(shù)。創(chuàng)建存儲過程的規(guī)那么再本人的存儲過程中可以援用暫時表,部分暫時表再過程終了時將再本人的存儲過程中可以援用暫時表,部分暫時表再過程終了時將會消逝。會消逝。再存儲過程中不能有如下的再存儲過程中不能有如下的SQL創(chuàng)建語句創(chuàng)建語句:Create Default、Create Procedure、Create Rule、Create Trigger、Create View.可在過程中嵌套過程??稍谶^程中嵌套過程。創(chuàng)建存儲過程的文本不能超越創(chuàng)建存儲過程的文本不能超越64K字節(jié),以為字節(jié),以為SQL存放再存放再syscomments表中。表中。假設(shè)在存儲過程中運用了假設(shè)在存儲過
15、程中運用了Select *,而底層表中參與了新的列,新,而底層表中參與了新的列,新的列再過程運轉(zhuǎn)時無法顯示。的列再過程運轉(zhuǎn)時無法顯示。1 創(chuàng)建存儲過程 在在SQL ServerSQL Server中,可以運用三種方法創(chuàng)建存中,可以運用三種方法創(chuàng)建存儲過程儲過程 :運用創(chuàng)建存儲過程導游創(chuàng)建存儲過程。運用創(chuàng)建存儲過程導游創(chuàng)建存儲過程。利用利用SQL Server SQL Server 企業(yè)管理器創(chuàng)建存儲過程。企業(yè)管理器創(chuàng)建存儲過程。運用運用Transact-SQLTransact-SQL語句中的語句中的CREATE CREATE PROCEDUREPROCEDURE命令創(chuàng)建存儲過程。命令創(chuàng)建存儲過
16、程。 需求確定存儲過程的三個組成部分:一切的輸入?yún)?shù)以及傳給調(diào)用者的輸出參數(shù)。一切的輸入?yún)?shù)以及傳給調(diào)用者的輸出參數(shù)。被執(zhí)行的針對數(shù)據(jù)庫的操作語句,包括調(diào)用其被執(zhí)行的針對數(shù)據(jù)庫的操作語句,包括調(diào)用其它存儲過程的語句。它存儲過程的語句。前往給調(diào)用者的形狀值,以指明調(diào)用是勝利還前往給調(diào)用者的形狀值,以指明調(diào)用是勝利還是失敗。是失敗。1. 運用創(chuàng)建存儲過程導游創(chuàng)建存儲過程 在企業(yè)管理器中,選擇工具菜單中的導游在企業(yè)管理器中,選擇工具菜單中的導游選項,選擇選項,選擇“創(chuàng)建存儲過程導游創(chuàng)建存儲過程導游 根據(jù)提示可根據(jù)提示可完成創(chuàng)建存儲過程。完成創(chuàng)建存儲過程。2. 運用SQL Server 企業(yè)管理器創(chuàng)建
17、存儲過程 在在SQL ServerSQL Server企業(yè)管理器中,選擇指定的效企業(yè)管理器中,選擇指定的效力器和數(shù)據(jù)庫,用右鍵單擊要創(chuàng)建存儲過程的數(shù)據(jù)庫,力器和數(shù)據(jù)庫,用右鍵單擊要創(chuàng)建存儲過程的數(shù)據(jù)庫,在彈出的快捷菜單中選擇在彈出的快捷菜單中選擇“新建選項,再選擇下一級菜新建選項,再選擇下一級菜單中的單中的“存儲過程存儲過程選項選項在文本框中可以輸入創(chuàng)建存儲過程的在文本框中可以輸入創(chuàng)建存儲過程的T_SQLT_SQL語句,單擊語句,單擊“檢查語法,那么可以檢查語法能否正確;檢查語法,那么可以檢查語法能否正確;單擊單擊“確定按鈕,即可保管該存儲過程。假設(shè)要設(shè)置權(quán)確定按鈕,即可保管該存儲過程。假設(shè)要
18、設(shè)置權(quán)限,單擊限,單擊“權(quán)限權(quán)限按鈕。按鈕。3. 運用Transact-SQL語句創(chuàng)建存儲過程創(chuàng)建存儲過程前,應(yīng)該思索以下幾個事項:創(chuàng)建存儲過程前,應(yīng)該思索以下幾個事項:不能將不能將 CREATE PROCEDURE CREATE PROCEDURE 語句與其它語句與其它 SQL SQL 語句組語句組合到單個批處置中。合到單個批處置中。創(chuàng)建存儲過程的權(quán)限默許屬于數(shù)據(jù)庫一切者,該一切創(chuàng)建存儲過程的權(quán)限默許屬于數(shù)據(jù)庫一切者,該一切者可將此權(quán)限授予其他用戶。者可將此權(quán)限授予其他用戶。存儲過程是數(shù)據(jù)庫對象,其稱號必需遵守標識符規(guī)那存儲過程是數(shù)據(jù)庫對象,其稱號必需遵守標識符規(guī)那么。么。只能在當前數(shù)據(jù)庫中
19、創(chuàng)建存儲過程。只能在當前數(shù)據(jù)庫中創(chuàng)建存儲過程。一個存儲過程的最大尺寸為一個存儲過程的最大尺寸為128M128M。CREATE PROCEDURE的語法方式: CREATEPROCEDUREprocedure_name;number p a r a m e t e r d a t a _ t y p e V A R Y I N G = d e f a u l t O U T P U T ,.n WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION F O R R E P L I C A T I O N AS sql_statement .n CREATE
20、PROCEDURE的語法參數(shù)的意義: procedure_name:用于指定要創(chuàng)建的存儲過程的稱號。:用于指定要創(chuàng)建的存儲過程的稱號。 number:該參數(shù)是可選的整數(shù),它用來對同名的存儲:該參數(shù)是可選的整數(shù),它用來對同名的存儲過程分組,以便用一條過程分組,以便用一條 DROP PROCEDURE 語句即可語句即可將同組的過程一同除去。將同組的過程一同除去。 parameter:過程中的參數(shù)。在:過程中的參數(shù)。在 CREATE PROCEDURE 語句中可以聲明一個或多個參數(shù)。語句中可以聲明一個或多個參數(shù)。 data_type:用于指定參數(shù)的數(shù)據(jù)類型。:用于指定參數(shù)的數(shù)據(jù)類型。 VARYING
21、:用于指定作為輸出:用于指定作為輸出OUTPUT參數(shù)支持的結(jié)參數(shù)支持的結(jié)果集。果集。 Default:用于指定參數(shù)的默許值。:用于指定參數(shù)的默許值。 OUTPUT:闡明該參數(shù)是一個前往參數(shù)。:闡明該參數(shù)是一個前往參數(shù)。 RECOMPILE:闡明:闡明 SQL Server 不會保管該存儲過程不會保管該存儲過程的執(zhí)行方案的執(zhí)行方案 。ENCRYPTION :表示:表示 SQL Server 加密了加密了 syscomments 表,該表的表,該表的text字段是包含字段是包含 CREATE PROCEDURE 語句的存儲過程文本。語句的存儲過程文本。 FOR REPLICATION:用于指定不能
22、在訂閱效力器上:用于指定不能在訂閱效力器上執(zhí)行為復制創(chuàng)建的存儲過程。執(zhí)行為復制創(chuàng)建的存儲過程。 AS:用于指定該存儲過程要執(zhí)行的操作。:用于指定該存儲過程要執(zhí)行的操作。sql_statement:是存儲過程中要包含的恣意數(shù)目和類:是存儲過程中要包含的恣意數(shù)目和類型的型的 Transact-SQL 語句。語句。2 執(zhí)行存儲過程 直接執(zhí)行存儲過程可以運用直接執(zhí)行存儲過程可以運用EXECUTE命令來命令來執(zhí)行,其語法方式如下:執(zhí)行,其語法方式如下:EXECUTE r e t u r n _ s t a t u s = procedure_name;number|procedure_name_var
23、parameter=value|variableOUTPUT|DEFAULT ,.n WITH RECOMPILE 假設(shè)執(zhí)行存儲過程的語句是批中的第一個語句,可以省略假設(shè)執(zhí)行存儲過程的語句是批中的第一個語句,可以省略execute關(guān)鍵字。關(guān)鍵字。return status為整型部分變量,用于保管存儲過程的前為整型部分變量,用于保管存儲過程的前往值往值;procedure_name指定執(zhí)行的存儲過程的稱指定執(zhí)行的存儲過程的稱號號;number用來指定該存儲過程與其它同名存儲過程用來指定該存儲過程與其它同名存儲過程同組時的標識號。同組時的標識號。parameter:在創(chuàng)建過程時定義的過程參數(shù)。調(diào)用
24、者向存在創(chuàng)建過程時定義的過程參數(shù)。調(diào)用者向存儲過程所傳送的參數(shù)值由儲過程所傳送的參數(shù)值由value參數(shù)或參數(shù)或variable變量提供,變量提供,或者運用或者運用default關(guān)鍵字指定運用該參數(shù)的默許值。關(guān)鍵字指定運用該參數(shù)的默許值。output參數(shù)闡明指定參數(shù)為前往參數(shù)。參數(shù)闡明指定參數(shù)為前往參數(shù)。留意留意:假設(shè)按假設(shè)按paramete=value|variable的方式為存儲過的方式為存儲過程提供參數(shù),可以不思索創(chuàng)建存儲過程時的參數(shù)順序,但程提供參數(shù),可以不思索創(chuàng)建存儲過程時的參數(shù)順序,但是必需以這種方式提供該存儲過程的全部參數(shù)。假設(shè)不以是必需以這種方式提供該存儲過程的全部參數(shù)。假設(shè)不以
25、這種方式提供參數(shù),那么必需按照創(chuàng)建存儲過程時參數(shù)的這種方式提供參數(shù),那么必需按照創(chuàng)建存儲過程時參數(shù)的順序提供參數(shù)。順序提供參數(shù)。With Recompile指定在實行存儲過程時重新編譯執(zhí)行方指定在實行存儲過程時重新編譯執(zhí)行方案。案。例:Create procedure GetAvgname varchar(10),avg int outputAs DeclareErrorSave intSetErrorSave=0Select avgp=AVG(工程工程)From project as p INNER JOIN pmanager as pmon p.擔任人擔任人ID=Pm.擔任人擔任人IDWh
26、ere pm.姓名姓名=nameif(Error 0) SetErrorSave=ErrorReturnErrorSavego例: 運用運用 EXECUTE 命令傳送單個參數(shù),它執(zhí)行命令傳送單個參數(shù),它執(zhí)行 showind 存存儲過程,以儲過程,以 titles 為參數(shù)值。為參數(shù)值。showind 存儲過程需求參數(shù)存儲過程需求參數(shù) (tabname),它是一個表的稱號。其程序清單如下:,它是一個表的稱號。其程序清單如下:EXEC showind titles當然,在執(zhí)行過程中變量可以顯式命名:當然,在執(zhí)行過程中變量可以顯式命名:EXEC showind tabname = titles假設(shè)這是
27、假設(shè)這是 isql 腳本或批處置中第一個語句,那么腳本或批處置中第一個語句,那么 EXEC 語語句可以省略:句可以省略:showind titles或者或者showind tabname = titles3 查看和修正存儲過程 查看存儲過程查看存儲過程 存儲過程被創(chuàng)建之后,它的名字就存儲在系統(tǒng)表存儲過程被創(chuàng)建之后,它的名字就存儲在系統(tǒng)表sysobjects中,它的源代碼存放在系統(tǒng)表中,它的源代碼存放在系統(tǒng)表syscomments中??梢赃\用運用企業(yè)管理器或系統(tǒng)存中。可以運用運用企業(yè)管理器或系統(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程。儲過程來查看用戶創(chuàng)建的存儲過程。1運用企業(yè)管理器查看用戶創(chuàng)建的存儲過
28、程 在企業(yè)管理器中,翻開指定的效力器和數(shù)在企業(yè)管理器中,翻開指定的效力器和數(shù)據(jù)庫項,選擇要創(chuàng)建存儲過程的數(shù)據(jù)庫,單擊存據(jù)庫項,選擇要創(chuàng)建存儲過程的數(shù)據(jù)庫,單擊存儲過程文件夾,此時在右邊的頁框中顯示該數(shù)據(jù)儲過程文件夾,此時在右邊的頁框中顯示該數(shù)據(jù)庫的一切存儲過程。用右鍵單擊要查看的存儲過庫的一切存儲過程。用右鍵單擊要查看的存儲過程,從彈出的快捷菜單中選擇屬性選項,此時便程,從彈出的快捷菜單中選擇屬性選項,此時便可以看到存儲過程的源代碼??梢钥吹酱鎯^程的源代碼。 2運用系統(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程 可供運用的系統(tǒng)存儲過程及其語法方式如下:可供運用的系統(tǒng)存儲過程及其語法方式如下:sp_he
29、lp:用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型:用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型sp_help objname= name參數(shù)參數(shù)name為要查看的存儲過程的稱號。為要查看的存儲過程的稱號。 sp_helptext:用于顯示存儲過程的源代碼:用于顯示存儲過程的源代碼 sp_helptext objname= name參數(shù)參數(shù)name為要查看的存儲過程的稱號。為要查看的存儲過程的稱號。sp_depends:用于顯示和存儲過程相關(guān)的數(shù)據(jù)庫對象:用于顯示和存儲過程相關(guān)的數(shù)據(jù)庫對象sp_depends objname=object參數(shù)參數(shù)object為要查看依賴關(guān)系的存儲過程的稱號。為要查看依賴關(guān)系的存儲
30、過程的稱號。sp_stored_procedures:用于前往當前數(shù)據(jù)庫中的存儲過程列表:用于前往當前數(shù)據(jù)庫中的存儲過程列表2. 修正存儲過程存儲過程可以根據(jù)用戶的要求或者基表定義的改動而改動。運用存儲過程可以根據(jù)用戶的要求或者基表定義的改動而改動。運用ALTER PROCEDURE語句可以更改先前經(jīng)過執(zhí)行語句可以更改先前經(jīng)過執(zhí)行 CREATE PROCEDURE 語句創(chuàng)建的過程,但不會更改權(quán)限,也不影響相關(guān)的語句創(chuàng)建的過程,但不會更改權(quán)限,也不影響相關(guān)的存儲過程或觸發(fā)器。其語法方式如下:存儲過程或觸發(fā)器。其語法方式如下:ALTERPROCEDUREprocedure_name;number
31、parameterdata_type V A R Y I N G = d e f a u l t O U T P U T , . . . n WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATION AS sql_statement .n 4 重命名和刪除存儲過程1. 重命名存儲過程重命名存儲過程修正存儲過程的稱號可以運用系統(tǒng)存儲過程修正存儲過程的稱號可以運用系統(tǒng)存儲過程sp_rename,其語法方式如下:,其語法方式如下:sp_rename 原存儲過程稱號,新存儲過程原存儲過程稱號,新存儲過程稱號稱號另外,經(jīng)過企業(yè)管理器也可以修
32、正存儲過程另外,經(jīng)過企業(yè)管理器也可以修正存儲過程的稱號。的稱號。 2. 刪除存儲過程刪除存儲過程可以運用刪除存儲過程可以運用DROP命令,命令,DROP命令命令可以將一個或者多個存儲過程或者存儲過程組從可以將一個或者多個存儲過程或者存儲過程組從當前數(shù)據(jù)庫中刪除,其語法方式如下:當前數(shù)據(jù)庫中刪除,其語法方式如下:drop procedure procedure ,n當然,利用企業(yè)管理器也可以很方便地刪除存儲當然,利用企業(yè)管理器也可以很方便地刪除存儲過程。過程。 在存儲過程中運用參數(shù)例例:下面的存儲過程有下面的存儲過程有5個傳入?yún)?shù),求其平均值,而后將個傳入?yún)?shù),求其平均值,而后將平均值賦給平均值
33、賦給output。Create Procedure scoresscore1 smallint,score2 smallint,score3 smallint,score4 smallint,score5 smallint,myAvg smallint OutputAs selectmyAvg=(scarel+scare2+scare3+scare4+scare5)/5要調(diào)用要調(diào)用myAvg的值,一首先要定義一個變量,然的值,一首先要定義一個變量,然后才干運轉(zhuǎn)該程序。后才干運轉(zhuǎn)該程序。Declare AvgScore smallintExec scores 113,9,8,8,113,AvgScnre OutputSelect The Average Score is:,AvgScnrego在將值傳送給存儲過程時,可以按位置順序傳入在將值傳送給存儲過程時,可以按位置順序傳入(稱為按位置傳稱為按位置傳入入)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地質(zhì)勘探服務(wù)招標合同三篇
- 業(yè)務(wù)外包中的安全隱患計劃
- 促進多元化發(fā)展的工作計劃
- 礦山協(xié)議合同范本
- 河南省商丘市(2024年-2025年小學五年級語文)統(tǒng)編版摸底考試((上下)學期)試卷及答案
- 石門租房合同范本
- 情侶家暴合同范本
- 婚慶租車合同范本
- 壁畫合作合同范本
- 招標追加合同范本
- 人教版六年級下冊《反比例的量》導學案
- GB 26402-2011 食品安全國家標準 食品添加劑 碘酸鉀
- DNA甲基化與腫瘤分子標志
- 《甲方認質(zhì)認價確認單》
- 降低住院患者跌倒發(fā)生率
- 各種煙氣焓溫、密度、比熱計算表
- 導游與旅行社簽訂勞動合同
- 公路管理工作常見五大訴訟風險及防范
- FLUKE-17B型萬用表使用說明
- 探析高校圖書館文創(chuàng)產(chǎn)品開發(fā)與推廣-以清華大學圖書館為例
- 痰飲咳嗽病脈證并治第十二
評論
0/150
提交評論