數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程_第1頁(yè)
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程_第2頁(yè)
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程_第3頁(yè)
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程_第4頁(yè)
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程第1頁(yè),共49頁(yè),2023年,2月20日,星期六10存儲(chǔ)過(guò)程

1.存儲(chǔ)過(guò)程的概念2.創(chuàng)建存儲(chǔ)過(guò)程3.執(zhí)行存儲(chǔ)過(guò)程4.存儲(chǔ)過(guò)程的管理與維護(hù)第2頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念

SQLServer應(yīng)用操作中,存儲(chǔ)過(guò)程和觸發(fā)器扮演相當(dāng)重要的角色,不僅能提高應(yīng)用效率,確保一致性,更能提高系統(tǒng)執(zhí)行速度。同時(shí),使用觸發(fā)器來(lái)完成業(yè)務(wù)規(guī)則,達(dá)到簡(jiǎn)化程序設(shè)計(jì)的目的。第3頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念

存儲(chǔ)過(guò)程包括系統(tǒng)存儲(chǔ)過(guò)程和用戶存儲(chǔ)過(guò)程。系統(tǒng)存儲(chǔ)過(guò)程:Executesp_help表名:查看表的結(jié)構(gòu)。Executesp_helpindex表名

:查看表上的索引信息。Executesp_helptext視圖名:查看視圖的定義信息。第4頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念

存儲(chǔ)過(guò)程按返回的數(shù)據(jù)類型,可分為兩類:一類類似于SELECT語(yǔ)句,用于查詢數(shù)據(jù),查詢到的數(shù)據(jù)以結(jié)果集的形式給出;另一類存儲(chǔ)過(guò)程是通過(guò)輸出參數(shù)返回信息,或不返回信息只執(zhí)行一個(gè)動(dòng)作。存儲(chǔ)過(guò)程可以嵌套,即一個(gè)存儲(chǔ)過(guò)程的內(nèi)部可以調(diào)用另一個(gè)存儲(chǔ)過(guò)程。第5頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(1)基本概念

存儲(chǔ)過(guò)程是一組編譯在單個(gè)執(zhí)行計(jì)劃中的Transact-SQL語(yǔ)句,它將一些固定的操作集中起來(lái)交給SQLServer數(shù)據(jù)庫(kù)服務(wù)器完成,以實(shí)現(xiàn)某個(gè)任務(wù)。

存儲(chǔ)過(guò)程就是預(yù)先編譯和優(yōu)化并存儲(chǔ)于數(shù)據(jù)庫(kù)中的過(guò)程。第6頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(2)存儲(chǔ)過(guò)程的優(yōu)點(diǎn)

1)通過(guò)本地存儲(chǔ)、代碼預(yù)編譯和緩存技術(shù)實(shí)現(xiàn)高性能的數(shù)據(jù)操作。 2)通過(guò)通用編程結(jié)構(gòu)和過(guò)程重用實(shí)現(xiàn)編程框架。 3)通過(guò)隔離和加密的方法提高了數(shù)據(jù)庫(kù)的安全性。第7頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念使用存儲(chǔ)過(guò)程的好處 1)允許模塊化的程序設(shè)計(jì)。 2)更快的執(zhí)行速度。 3)有效降低網(wǎng)絡(luò)流量。

4)較好地安全機(jī)制。第8頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(3)存儲(chǔ)過(guò)程的類型

1)系統(tǒng)存儲(chǔ)過(guò)程系統(tǒng)存儲(chǔ)過(guò)程(SystemStoredProcedures)主要存儲(chǔ)在master數(shù)據(jù)庫(kù)中,以sp_開(kāi)頭,用來(lái)進(jìn)行系統(tǒng)的各項(xiàng)設(shè)定,獲取信息,從而為系統(tǒng)管理員管理SQLServer提供支持。第9頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(3)存儲(chǔ)過(guò)程的類型

1)系統(tǒng)存儲(chǔ)過(guò)程系統(tǒng)存儲(chǔ)過(guò)程我們以前接觸過(guò):Executesp_help表名:查看表的結(jié)構(gòu)。Executesp_helpindex表名:查看表上的索引信息。Executesp_helptext視圖名:查看視圖的定義信息。SQLServer提供了很多系統(tǒng)存儲(chǔ)過(guò)程,他們用于系統(tǒng)管理、用戶登錄管理、權(quán)限設(shè)置、數(shù)據(jù)庫(kù)對(duì)象管理、數(shù)據(jù)復(fù)制等操作。第10頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(3)存儲(chǔ)過(guò)程的類型

2)用戶自定義的存儲(chǔ)過(guò)程用戶定義的存儲(chǔ)過(guò)程可分為本地存儲(chǔ)過(guò)程(LocalStoredProcedures)、遠(yuǎn)程存儲(chǔ)過(guò)程(RemoteStoredProcedures)、臨時(shí)存儲(chǔ)過(guò)程(TemporaryStoredProcedures)、擴(kuò)展存儲(chǔ)過(guò)程(ExtendedStoredProcedures)等。在這里我們只討論本地存儲(chǔ)過(guò)程。第11頁(yè),共49頁(yè),2023年,2月20日,星期六1.存儲(chǔ)過(guò)程的概念(3)存儲(chǔ)過(guò)程的類型

2)用戶自定義的存儲(chǔ)過(guò)程

由用戶在當(dāng)前工作的數(shù)據(jù)庫(kù)中創(chuàng)建的存儲(chǔ)過(guò)程,稱作本地存儲(chǔ)過(guò)程。事實(shí)上一般所說(shuō)的存儲(chǔ)過(guò)程指的就是本地存儲(chǔ)過(guò)程。第12頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

創(chuàng)建用戶自定義存儲(chǔ)過(guò)程有兩種方法:可以使用T-SQL語(yǔ)言的CREATEPROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程,也可以使用對(duì)象資源管理器向?qū)?chuàng)建存儲(chǔ)過(guò)程。

第13頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程創(chuàng)建和使用存儲(chǔ)過(guò)程都必須遵循如下的規(guī)則:1)創(chuàng)建存儲(chǔ)過(guò)程的權(quán)限默認(rèn)為屬于數(shù)據(jù)庫(kù)所有者,該所有者可以把次權(quán)限授予其他用戶。2)存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)對(duì)象,其名稱必須遵守標(biāo)識(shí)符規(guī)則。名稱標(biāo)識(shí)符的長(zhǎng)度最大為128位,且數(shù)據(jù)庫(kù)中必須惟一。3)只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建存儲(chǔ)過(guò)程。4)每個(gè)存儲(chǔ)過(guò)程最多可以使用1024個(gè)參數(shù)。5)存儲(chǔ)過(guò)程最大支持32層嵌套。第14頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(1)創(chuàng)建不帶參數(shù)的存儲(chǔ)過(guò)程

創(chuàng)建存儲(chǔ)過(guò)程的基本語(yǔ)法如下:

CREATEPROCEDURE存儲(chǔ)過(guò)程名 [WITHENCRYPTION]—對(duì)存儲(chǔ)過(guò)程加密 [WITHRECOMPILE]—對(duì)存儲(chǔ)過(guò)程重新編譯 AS SQL語(yǔ)句第15頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(1)創(chuàng)建不帶參數(shù)的存儲(chǔ)過(guò)程

執(zhí)行存儲(chǔ)過(guò)程的基本語(yǔ)法如下:EXEC[UTE]存儲(chǔ)過(guò)程名如果該存儲(chǔ)過(guò)程是批處理中第一條語(yǔ)句,則EXEC可以省略。簡(jiǎn)單存儲(chǔ)過(guò)程類似于將一組SQL語(yǔ)句起個(gè)名字,然后就可以在需要時(shí)反復(fù)調(diào)用。復(fù)雜一些的則要有輸入和輸出參數(shù)。第16頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

【實(shí)例】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中,創(chuàng)建一個(gè)名為“grade_pro”的存儲(chǔ)過(guò)程,用于查詢不及格學(xué)生的成績(jī)信息(包括學(xué)號(hào),姓名,課程名稱,成績(jī))。USE學(xué)生成績(jī)管理系統(tǒng)GOcreateproceduregrade_proasselect學(xué)生表.學(xué)號(hào),姓名,課程名,分?jǐn)?shù)from學(xué)生表,課程表,成績(jī)表where學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)and課程表.課程號(hào)=成績(jī)表.課程號(hào)and分?jǐn)?shù)<60go第17頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

【實(shí)例】針對(duì)教師表Teacher,創(chuàng)建一個(gè)名為teacher_pro1的存儲(chǔ)過(guò)程,用于查詢所有男教師的信息。USE學(xué)生成績(jī)管理系統(tǒng)GOcreateprocedureteacher_proasselect*from教師表where性別='男'go第18頁(yè),共49頁(yè),2023年,2月20日,星期六

執(zhí)行存儲(chǔ)過(guò)程

在存儲(chǔ)過(guò)程建立好后,該存儲(chǔ)過(guò)程作為數(shù)據(jù)庫(kù)對(duì)象已經(jīng)存在,其名稱和文件分別存放在sysobjects和syscomments系統(tǒng)表中??梢允褂肨-SQL的EXECUTE語(yǔ)句來(lái)執(zhí)行存儲(chǔ)過(guò)程。如果該存儲(chǔ)過(guò)程是批處理中第一條語(yǔ)句,則EXEC關(guān)鍵字可以省略。執(zhí)行存儲(chǔ)過(guò)程的基本語(yǔ)法如下:EXEC[UTE]存儲(chǔ)過(guò)程名第19頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(2)創(chuàng)建帶輸入?yún)?shù)的存儲(chǔ)過(guò)程

一個(gè)存儲(chǔ)過(guò)程可以帶一個(gè)或多個(gè)輸入?yún)?shù),輸入?yún)?shù)是指由調(diào)用程序向存儲(chǔ)過(guò)程傳遞的參數(shù),它們?cè)趧?chuàng)建存儲(chǔ)過(guò)程語(yǔ)句中被定義,在執(zhí)行存儲(chǔ)過(guò)程中給出相應(yīng)的參數(shù)值。第20頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(2)創(chuàng)建帶輸入?yún)?shù)的存儲(chǔ)過(guò)程創(chuàng)建帶輸入?yún)?shù)的存儲(chǔ)過(guò)程的語(yǔ)法格式如下:CREATEPROCEDURE存儲(chǔ)過(guò)程名@參數(shù)名數(shù)據(jù)類型[=默認(rèn)值][,...n][WITHENCRYPTION][WITHRECOMPILE]ASSQL語(yǔ)句第21頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程【例10-2】從學(xué)生表中返回指定學(xué)號(hào)的學(xué)生的信息。createprocedureu_getstudent@numbervarchar(40)asselect*from學(xué)生表where學(xué)號(hào)=@number第22頁(yè),共49頁(yè),2023年,2月20日,星期六

執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程在執(zhí)行存儲(chǔ)過(guò)程的語(yǔ)句中,有兩種方式來(lái)傳遞參數(shù)值,分別是使用參數(shù)名傳遞參數(shù)值和按參數(shù)位置傳遞參數(shù)值。使用參數(shù)名傳遞參數(shù)值,是通過(guò)語(yǔ)句“@參數(shù)名=參數(shù)值”給參數(shù)傳遞值。當(dāng)存儲(chǔ)過(guò)程含有多個(gè)輸入?yún)?shù)時(shí),參數(shù)值可以按任意順序制定,對(duì)于允許空值和具有默認(rèn)值的輸入?yún)?shù)可以不給出參數(shù)的傳遞值。

第23頁(yè),共49頁(yè),2023年,2月20日,星期六執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程

1)使用參數(shù)名傳遞參數(shù)值

執(zhí)行使用參數(shù)名傳遞參數(shù)值的存儲(chǔ)過(guò)程的語(yǔ)法格式如下。

EXECUTE存儲(chǔ)過(guò)程名[@參數(shù)名=參數(shù)值][,...n]第24頁(yè),共49頁(yè),2023年,2月20日,星期六執(zhí)行存儲(chǔ)過(guò)程

【實(shí)例】執(zhí)行【實(shí)例10-2】創(chuàng)建的存儲(chǔ)過(guò)程u_getstudentexecuteu_getstudent@number=

'1002'第25頁(yè),共49頁(yè),2023年,2月20日,星期六

執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程

2)按位置傳送參數(shù)值

在執(zhí)行存儲(chǔ)過(guò)程的語(yǔ)句中,不參照被傳遞的參數(shù)而直接給出參數(shù)的傳遞值。當(dāng)存儲(chǔ)過(guò)程含有多個(gè)輸入?yún)?shù)時(shí),傳遞值的順序必須與存儲(chǔ)過(guò)程中定義的輸入?yún)?shù)的順序相一致。按位置傳遞參數(shù)值的存儲(chǔ)過(guò)程的語(yǔ)法格式如下。

EXECUTE存儲(chǔ)過(guò)程名[參數(shù)值1,參數(shù)值2,...n]第26頁(yè),共49頁(yè),2023年,2月20日,星期六

執(zhí)行存儲(chǔ)過(guò)程

【實(shí)例】執(zhí)行【實(shí)例10-2】創(chuàng)建的存儲(chǔ)過(guò)程u_getstudentexecuteu_getstudent

'1002'第27頁(yè),共49頁(yè),2023年,2月20日,星期六執(zhí)行存儲(chǔ)過(guò)程

可以看到,按參數(shù)位置傳遞參數(shù)值比按參數(shù)名傳遞參數(shù)值簡(jiǎn)潔,比較適合參數(shù)值較少的情況;而按參數(shù)名傳遞參數(shù)使程序可讀性增強(qiáng)。特別是參數(shù)數(shù)量較多時(shí),建議使用按參數(shù)名稱傳遞參數(shù)的方法,這樣的程序可讀性、可維護(hù)性都要好一些。第28頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程【例10-3】創(chuàng)建帶有通配符參數(shù)的存儲(chǔ)過(guò)程。下面的存儲(chǔ)過(guò)程只從學(xué)生表中返回指定一些學(xué)生(提供名字和姓氏)的信息。該存儲(chǔ)過(guò)程對(duì)傳遞的參數(shù)進(jìn)行模式匹配,如果沒(méi)有提供參數(shù),則返回所有學(xué)生的信息。createprocedureu_getstudentbyname@namevarchar(40)='%'asselect*from學(xué)生表where姓名like@namego第29頁(yè),共49頁(yè),2023年,2月20日,星期六執(zhí)行存儲(chǔ)過(guò)程執(zhí)行存儲(chǔ)過(guò)程,可以按多種組合執(zhí)行。executeu_getstudentbynameexecuteu_getstudentbyname'張%'executeu_getstudentbyname'張劉'第30頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(3)創(chuàng)建帶輸出參數(shù)的存儲(chǔ)過(guò)程如果我們需要從存儲(chǔ)過(guò)程中返回一個(gè)或多個(gè)值,可以通過(guò)在創(chuàng)建存儲(chǔ)過(guò)程的語(yǔ)句中定義輸出參數(shù)來(lái)實(shí)現(xiàn),為了使用輸出參數(shù),需要在CREATEPROCEDURE語(yǔ)句中指定OUTPUT關(guān)鍵字。第31頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

(3)創(chuàng)建帶輸出參數(shù)的存儲(chǔ)過(guò)程創(chuàng)建帶輸出參數(shù)的存儲(chǔ)過(guò)程的語(yǔ)法格式如下:CREATEPROCEDURE存儲(chǔ)過(guò)程名@參數(shù)名數(shù)據(jù)類型[VARYING][=默認(rèn)值]OUTPUT[,...n][WITHENCRYPTION][WITHRECOMPILE]ASSQL語(yǔ)句第32頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程【例10-4】創(chuàng)建一個(gè)存儲(chǔ)過(guò)程U_getstudentaveagebydept,獲得某個(gè)院系的學(xué)生的平均年齡。createprocedureu_getstudentaveagebydept@deptvarchar(40),@aveageintoutasselect@aveage=avg(year(getdate())-year(出生日期))from學(xué)生表where院系名稱=@deptgo第33頁(yè),共49頁(yè),2023年,2月20日,星期六執(zhí)行存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程的執(zhí)行:declare@aveageintexecuteu_getstudentaveagebydept'計(jì)算機(jī)學(xué)院',@aveageoutprint@aveage第34頁(yè),共49頁(yè),2023年,2月20日,星期六2.創(chuàng)建存儲(chǔ)過(guò)程

【實(shí)例】創(chuàng)建一個(gè)存儲(chǔ)過(guò)程ssc_pro3,獲得選取某門課程的選課人數(shù)。USE學(xué)生成績(jī)管理系統(tǒng)GOcreateprocedures_pro3@snamevarchar(30),@countintoutasselect@count=count(*)from學(xué)生表,課程表,成績(jī)表where學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)

and課程表.課程號(hào)=成績(jī)表.課程號(hào)

and課程名=@snamego第35頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

在存儲(chǔ)過(guò)程建立好后,該存儲(chǔ)過(guò)程作為數(shù)據(jù)庫(kù)對(duì)象已經(jīng)存在,其名稱和文件分別存放在sysobjects和syscomments系統(tǒng)表中??梢允褂肨-SQL的EXECUTE語(yǔ)句來(lái)執(zhí)行存儲(chǔ)過(guò)程。如果該存儲(chǔ)過(guò)程是批處理中第一條語(yǔ)句,則EXEC關(guān)鍵字可以省略。執(zhí)行存儲(chǔ)過(guò)程的基本語(yǔ)法如下:EXEC[UTE]存儲(chǔ)過(guò)程名第36頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

(1)執(zhí)行不帶參數(shù)的存儲(chǔ)過(guò)程【實(shí)例8-37】執(zhí)行【實(shí)例8-32】中創(chuàng)建的名為“grade_pro”的存儲(chǔ)過(guò)程,用于查詢不及格學(xué)生的成績(jī)信息(包括學(xué)號(hào),姓名,課程名稱,成績(jī))。Execgrade_pro【實(shí)例8-38】執(zhí)行【實(shí)例8-33】創(chuàng)建的名為teacher_pro1的存儲(chǔ)過(guò)程,用于查詢所有男教師的信息。Execteacher_pro1

第37頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程在執(zhí)行存儲(chǔ)過(guò)程的語(yǔ)句中,有兩種方式來(lái)傳遞參數(shù)值,分別是使用參數(shù)名傳遞參數(shù)值和按參數(shù)位置傳遞參數(shù)值。使用參數(shù)名傳遞參數(shù)值,是通過(guò)語(yǔ)句“@參數(shù)名=參數(shù)值”給參數(shù)傳遞值。當(dāng)存儲(chǔ)過(guò)程含有多個(gè)輸入?yún)?shù)時(shí),參數(shù)值可以按任意順序制定,對(duì)于允許空值和具有默認(rèn)值的輸入?yún)?shù)可以不給出參數(shù)的傳遞值。

第38頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程

1)使用參數(shù)名傳遞參數(shù)值

執(zhí)行使用參數(shù)名傳遞參數(shù)值的存儲(chǔ)過(guò)程的語(yǔ)法格式如下。

EXECUTE存儲(chǔ)過(guò)程名[@參數(shù)名=參數(shù)值][,...n]第39頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

【實(shí)例8-39】執(zhí)行【實(shí)例8-34】創(chuàng)建的存儲(chǔ)過(guò)程ssc_pro1,使用輸入?yún)?shù)(課程名稱),用于查詢某門課程的選修情況,包括學(xué)號(hào),姓名,課程名稱和成績(jī)。EXECssc_pro1@scname='數(shù)據(jù)庫(kù)技術(shù)'【實(shí)例8-40】執(zhí)行【實(shí)例8-36】創(chuàng)建的存儲(chǔ)過(guò)程ssc_pro3,獲得選取某門課程的選課人數(shù)。DECLARE@ccountINTEXECssc_pro3@scname='數(shù)據(jù)庫(kù)技術(shù)',@ccount=@ccountOUTPUTPRINT'選修數(shù)據(jù)庫(kù)技術(shù)課程的人數(shù)為:',@ccount第40頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

(2)執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程

2)按位置傳送參數(shù)值

在執(zhí)行存儲(chǔ)過(guò)程的語(yǔ)句中,不參照被傳遞的參數(shù)而直接給出參數(shù)的傳遞值。當(dāng)存儲(chǔ)過(guò)程含有多個(gè)輸入?yún)?shù)時(shí),傳遞值的順序必須與存儲(chǔ)過(guò)程中定義的輸入?yún)?shù)的順序相一致。按位置傳遞參數(shù)值的存儲(chǔ)過(guò)程的語(yǔ)法格式如下。

EXECUTE存儲(chǔ)過(guò)程名[參數(shù)值1,參數(shù)值2,...n]第41頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

【實(shí)例8-41】執(zhí)行【實(shí)例8-34】創(chuàng)建的存儲(chǔ)過(guò)程ssc_pro1,使用輸入?yún)?shù)(課程名稱),用于查詢某門課程的選修情況,包括學(xué)號(hào),姓名,課程名稱和成績(jī)。EXECssc_pro1'數(shù)據(jù)庫(kù)技術(shù)'【實(shí)例8-42】執(zhí)行【實(shí)例8-36】創(chuàng)建的存儲(chǔ)過(guò)程ssc_pro3,獲得選取某門課程的選課人數(shù)。DECLARE@ccountINTEXECssc_pro3'數(shù)據(jù)庫(kù)技術(shù)',@ccountOUTPUTSELECT'選修數(shù)據(jù)庫(kù)技術(shù)課程的人數(shù)為:',@ccount第42頁(yè),共49頁(yè),2023年,2月20日,星期六3.執(zhí)行存儲(chǔ)過(guò)程

可以看到,按參數(shù)位置傳遞參數(shù)值比按參數(shù)名傳遞參數(shù)值簡(jiǎn)潔,比較適合參數(shù)值較少的情況;而按參數(shù)名傳遞參數(shù)使程序可讀性增強(qiáng)。特別是參數(shù)數(shù)量較多時(shí),建議使用按參數(shù)名稱傳遞參數(shù)的方法,這樣的程序可讀性、可維護(hù)性都要好一些。第43頁(yè),共49頁(yè),2023年,2月20日,星期六4.存儲(chǔ)過(guò)程的管理與維護(hù)

(1)查看存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程建立好后,該存儲(chǔ)過(guò)程作為數(shù)據(jù)庫(kù)對(duì)象已經(jīng)存在,其名稱和文件分別存放在sysobjects和syscomments系統(tǒng)表中。我們可以通過(guò)對(duì)象資源管理器查看存儲(chǔ)過(guò)程的源代碼,也可以通過(guò)SQLServer提供的系統(tǒng)存儲(chǔ)過(guò)程來(lái)查看用戶創(chuàng)建的存儲(chǔ)過(guò)程信息。

可以使用對(duì)象資源管理器和系統(tǒng)存儲(chǔ)過(guò)程來(lái)查看用戶自定義存儲(chǔ)過(guò)程。第44頁(yè),共49頁(yè),2023年,2月20日,星期六4.存儲(chǔ)過(guò)程的管理與維護(hù)

(1)查看存儲(chǔ)過(guò)程

2)使用系統(tǒng)存儲(chǔ)過(guò)程在查詢分析器下,可以通過(guò)系統(tǒng)存儲(chǔ)過(guò)程sp_helptext查看存儲(chǔ)過(guò)程的定義;通過(guò)sp_help查看存儲(chǔ)過(guò)程的參數(shù);通過(guò)sp_depends查看存儲(chǔ)過(guò)程的相關(guān)性。【實(shí)例】在查詢分析器下,使用系統(tǒng)存儲(chǔ)過(guò)程,查看【實(shí)例10-2】創(chuàng)建的存儲(chǔ)過(guò)程、參數(shù)和相關(guān)性。EXECUTEsp_helptextssc_pro1EXECUTEsp_helpssc_pro1EXECUTEsp_dependsssc_pro1第45頁(yè),共49頁(yè),2023年,2月20日,星期六4.存儲(chǔ)過(guò)程的管理與維護(hù)

(2)修改存儲(chǔ)過(guò)程

修改存儲(chǔ)過(guò)程通常是指編輯它的參數(shù)和T-S

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論