第8章-存儲(chǔ)過(guò)程(精品課件)_第1頁(yè)
第8章-存儲(chǔ)過(guò)程(精品課件)_第2頁(yè)
第8章-存儲(chǔ)過(guò)程(精品課件)_第3頁(yè)
第8章-存儲(chǔ)過(guò)程(精品課件)_第4頁(yè)
第8章-存儲(chǔ)過(guò)程(精品課件)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(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)介

1、第8章 存儲(chǔ)過(guò)程12021/8/5page2本章知識(shí)點(diǎn)w 存儲(chǔ)過(guò)程概述w 存儲(chǔ)過(guò)程分類 w 存儲(chǔ)過(guò)程執(zhí)行過(guò)程 w 創(chuàng)建存儲(chǔ)過(guò)程 w 修改及刪除存儲(chǔ)過(guò)程w 調(diào)用存儲(chǔ)過(guò)程page3存儲(chǔ)過(guò)程概述w 場(chǎng) 景F在學(xué)生成績(jī)管理系統(tǒng)中,系統(tǒng)用戶經(jīng)常在學(xué)生成績(jī)管理系統(tǒng)中,系統(tǒng)用戶經(jīng)常查詢學(xué)生考試查詢學(xué)生考試信息,信息,包括:學(xué)生名字、所屬班級(jí)、授課老師、考試科目、考試分包括:學(xué)生名字、所屬班級(jí)、授課老師、考試科目、考試分?jǐn)?shù)等信息。由于該查詢?cè)诔绦蛑泻芏嗟胤蕉家玫?,而且使?shù)等信息。由于該查詢?cè)诔绦蛑泻芏嗟胤蕉家玫剑沂褂妙l率非常高,因此,開(kāi)發(fā)人員想用一種可以用頻率非常高,因此,開(kāi)發(fā)人員想用一種可以重用重用

2、而又而又高性高性能能的方式來(lái)實(shí)現(xiàn)。的方式來(lái)實(shí)現(xiàn)。page4存儲(chǔ)過(guò)程概述w 問(wèn)題分析F所查詢的信息分布在所查詢的信息分布在student、score、course、teacher四張表中,需要用連接查詢四張表中,需要用連接查詢,查詢代碼如下:查詢代碼如下:SELECT *FROM STUDENT INNER JOIN SCORE ON STUDENT.SNO=SCORE.SNOINNER JOIN COURSE ON SCORE.CNO=COURSE.CNOINNER JOIN TEACHER ON COURSE.TNO=TEACHER.TNOWHEREGROP BY HAVINGORDER B

3、Ypage5存儲(chǔ)過(guò)程概述w 問(wèn)題分析F存在的問(wèn)題存在的問(wèn)題 該查詢功能在程序中的很多地方使用,因此同樣一段代碼要重復(fù)寫(xiě)多遍,如果查詢信息有所改變,則要改變很多地方,給程序員帶來(lái)一定的麻煩。 系統(tǒng)使用人員每次提交查詢,數(shù)據(jù)庫(kù)服務(wù)器會(huì)對(duì)查詢語(yǔ)句進(jìn)行編譯、解析和執(zhí)行,而且是反復(fù)做同樣的事情,浪費(fèi)服務(wù)器資源。page6存儲(chǔ)過(guò)程概述w 解決問(wèn)題F解決方案解決方案 常規(guī)SQL語(yǔ)句能實(shí)現(xiàn)查詢功能,但存在一些問(wèn)題,如:代碼復(fù)用率低、可維護(hù)性差和性能低,因此SQL SERVER給出了一種可重用、易維護(hù)和高效的解決方案 存儲(chǔ)過(guò)程(Stored Procedure )page7存儲(chǔ)過(guò)程概述w 定 義F將多次重復(fù)執(zhí)行

4、的實(shí)現(xiàn)特定功能的代碼段編寫(xiě)成一個(gè)將多次重復(fù)執(zhí)行的實(shí)現(xiàn)特定功能的代碼段編寫(xiě)成一個(gè)“過(guò)程過(guò)程”,將其保存在數(shù)據(jù)庫(kù)中,并由將其保存在數(shù)據(jù)庫(kù)中,并由SQL Server服務(wù)器通過(guò)其過(guò)程名來(lái)進(jìn)服務(wù)器通過(guò)其過(guò)程名來(lái)進(jìn)行調(diào)用,這樣的行調(diào)用,這樣的“過(guò)程過(guò)程”就叫做就叫做存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程。w 特 征 存儲(chǔ)過(guò)程是一個(gè)SQL語(yǔ)句組合。在創(chuàng)建時(shí)進(jìn)行預(yù)編譯,首次被調(diào)用時(shí)進(jìn)行解析,以后再被調(diào)用,則可直接執(zhí)行 存儲(chǔ)過(guò)程實(shí)現(xiàn)了模塊化編程。被創(chuàng)建后可以被多個(gè)用戶共享和重用,有效的減少網(wǎng)絡(luò)流量,提高SQL語(yǔ)句的執(zhí)行效率,提高數(shù)據(jù)庫(kù)的安全性能page8存儲(chǔ)過(guò)程概述w 優(yōu) 點(diǎn)F存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編程。存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編

5、程。F存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度。存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度。F存儲(chǔ)過(guò)程能夠減少網(wǎng)絡(luò)流量。存儲(chǔ)過(guò)程能夠減少網(wǎng)絡(luò)流量。F存儲(chǔ)過(guò)程可被作為一種安全機(jī)制來(lái)充分利用。存儲(chǔ)過(guò)程可被作為一種安全機(jī)制來(lái)充分利用。page9創(chuàng)建存儲(chǔ)過(guò)程w 基本語(yǔ)法CREATE PROC | PROCEDURE procedure_name (parameter data_type VARYING = default OUT | OUTPUT ,. WITH ENCRYPTION ASBEGIN ,. ENDpage10創(chuàng)建存儲(chǔ)過(guò)程w基本語(yǔ)法:參數(shù)說(shuō)明參數(shù)說(shuō)明 procedure_name : 過(guò)程名稱過(guò)程名稱 過(guò)程的

6、參數(shù)過(guò)程的參數(shù) data_type : parameter : 參數(shù)的數(shù)據(jù)類型參數(shù)的數(shù)據(jù)類型 VARYING :指定作為輸出參數(shù)支持的結(jié)果集,僅適用于:指定作為輸出參數(shù)支持的結(jié)果集,僅適用于cursor參數(shù)參數(shù) DEFAULT : 參數(shù)的默認(rèn)值參數(shù)的默認(rèn)值 OUTPUT : 指示參數(shù)是輸出參數(shù)指示參數(shù)是輸出參數(shù) ENCRYPTION : 將將CREATE PROCEDURE語(yǔ)句的原始文本語(yǔ)句的原始文本加密加密 AS : 指明該存儲(chǔ)過(guò)程將要執(zhí)行的動(dòng)作指明該存儲(chǔ)過(guò)程將要執(zhí)行的動(dòng)作 : 要包含在過(guò)程中的一個(gè)或多個(gè)要包含在過(guò)程中的一個(gè)或多個(gè)T-SQL語(yǔ)句語(yǔ)句page11創(chuàng)建存儲(chǔ)過(guò)程w 執(zhí)行代碼CREA

7、TE PROCEDURE prcListClassesWITH ENCRYPTIONASBEGINSELECT c.classCourseName, d.depName, c.classTeacherName, c.classStartTime, cr.crBuildingName, cr.crRoomNo, c.classLimitNum, c.classExistNum, c.classCredit FROM Classes c JOIN Department d ON c.classdepNo=d.depNo JOIN ClassRoom cr ON c.classRoomNo=cr.c

8、rNo WHERE classCourseName=計(jì)算機(jī)網(wǎng)絡(luò) ENDpage12執(zhí)行存儲(chǔ)過(guò)程w 語(yǔ) 法EXECUTE | EXEC proc_name ,Sp_help sp_helptextF注注 意意 在執(zhí)行存儲(chǔ)過(guò)程時(shí),如果語(yǔ)句是一個(gè)批處理中的第一個(gè)語(yǔ)句,則不一定要指定 EXECUTE 或EXEC關(guān)鍵字。 如果存儲(chǔ)過(guò)程帶有參數(shù),則在執(zhí)行過(guò)程時(shí),需帶上相應(yīng)的參數(shù)。page13實(shí)例分析二:存儲(chǔ)過(guò)程用輸出參數(shù)返回值w 課堂練習(xí)一:F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出每一音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出每一種歌曲的平均價(jià)格。種歌曲的平均價(jià)格。w 課堂練習(xí)二:

9、F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出每一音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出每一類歌曲中最貴的那一首。類歌曲中最貴的那一首。w 課堂練習(xí)三:F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠查詢出每一名同學(xué)的平均分?jǐn)?shù)。夠查詢出每一名同學(xué)的平均分?jǐn)?shù)。w 課堂練習(xí)四:F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠查詢出每一位老師所帶的學(xué)生的個(gè)數(shù)。夠查詢出每一位老師所帶的學(xué)生的個(gè)數(shù)。page14執(zhí)行存儲(chǔ)過(guò)程w 執(zhí)行存儲(chǔ)過(guò)程的步驟F編

10、譯階段編譯階段 在創(chuàng)建時(shí),系統(tǒng)對(duì)其語(yǔ)句進(jìn)行語(yǔ)法檢查。若有語(yǔ)法錯(cuò)誤則創(chuàng)建失敗,否則創(chuàng)建成功F解析階段解析階段 在首次執(zhí)行時(shí),從系統(tǒng)中讀取存儲(chǔ)過(guò)程,并檢查引用的數(shù)據(jù)庫(kù)對(duì)象是否存在。若存在找不到的數(shù)據(jù)庫(kù)對(duì)象則產(chǎn)生錯(cuò)誤,否則進(jìn)入執(zhí)行階段F執(zhí)行階段執(zhí)行階段 依次執(zhí)行存儲(chǔ)過(guò)程中的SQL語(yǔ)句page15存儲(chǔ)過(guò)程概述w 存儲(chǔ)過(guò)程分類F用戶定義的存儲(chǔ)過(guò)程用戶定義的存儲(chǔ)過(guò)程 T-SQL存儲(chǔ)過(guò)程 CLR存儲(chǔ)過(guò)程F系統(tǒng)存儲(chǔ)過(guò)程系統(tǒng)存儲(chǔ)過(guò)程F臨時(shí)存儲(chǔ)過(guò)程臨時(shí)存儲(chǔ)過(guò)程F遠(yuǎn)程存儲(chǔ)過(guò)程遠(yuǎn)程存儲(chǔ)過(guò)程page16存儲(chǔ)過(guò)程概述w 查看存儲(chǔ)過(guò)程F查看數(shù)據(jù)庫(kù)的的存儲(chǔ)過(guò)程也可以通過(guò)兩種方法:查看數(shù)據(jù)庫(kù)的的存儲(chǔ)過(guò)程也可以通過(guò)兩種方法: 利

11、用代碼命令 利用Manager StudioF利用代碼命令查看存儲(chǔ)過(guò)程利用代碼命令查看存儲(chǔ)過(guò)程 sp_help proc_name命令查看名為proc_name的存儲(chǔ)過(guò)程。 sp_helptext proc_name命令查看名為proc_name的存儲(chǔ)過(guò)程的詳細(xì)代碼。page17存儲(chǔ)過(guò)程概述w刪除存儲(chǔ)過(guò)程兩種方式F 在在Management Studio中選中要?jiǎng)h除的存儲(chǔ)過(guò)程,右鍵中選中要?jiǎng)h除的存儲(chǔ)過(guò)程,右鍵單擊單擊“刪除刪除”命令即可。如下圖。命令即可。如下圖。F 使用使用DROP命令命令DROP PROC PROC_ClassInfopage18修改存儲(chǔ)過(guò)程w 使用ALTERF例例 子:子

12、:ALTER PROCEDURE prcListClasses()ASBEGINselect c.classNo, c.classCourseName, c.classStartTime, c.classTeacherName, cr.crBuildingName, cr.crRoomNo from Classes c join ClassRoom cr on c.classRoomNo=cr.crNoENDpage19存儲(chǔ)過(guò)程的輸入和輸出w 參數(shù)是存儲(chǔ)過(guò)程與外界進(jìn)行交互的一種途徑F存儲(chǔ)過(guò)程通過(guò)存儲(chǔ)過(guò)程通過(guò)輸入?yún)?shù)輸入?yún)?shù)和和輸出參數(shù)輸出參數(shù)與外界進(jìn)行交互與外界進(jìn)行交互.w 存儲(chǔ)過(guò)程的數(shù)據(jù)傳遞

13、方式:F輸入?yún)?shù)輸入?yún)?shù) 調(diào)用者向存儲(chǔ)過(guò)程輸入的數(shù)據(jù)值F輸出參數(shù)輸出參數(shù) OUTPUT 存儲(chǔ)過(guò)程向調(diào)用者返回的數(shù)據(jù)值FRETURN語(yǔ)句語(yǔ)句 向外返回int型數(shù)據(jù)page20實(shí)例分析一:存儲(chǔ)過(guò)程中使用輸入?yún)?shù)w 提出問(wèn)題F學(xué)生成績(jī)管理系統(tǒng)學(xué)生成績(jī)管理系統(tǒng),用戶想更靈活的查詢用戶想更靈活的查詢指定學(xué)生指定學(xué)生的相關(guān)信的相關(guān)信息,利用簡(jiǎn)單的存儲(chǔ)過(guò)程缺乏靈活性,難以滿足用戶需求,息,利用簡(jiǎn)單的存儲(chǔ)過(guò)程缺乏靈活性,難以滿足用戶需求,系統(tǒng)應(yīng)該能夠讓用戶查詢指定課程名稱課程相關(guān)信息。系統(tǒng)應(yīng)該能夠讓用戶查詢指定課程名稱課程相關(guān)信息。page21實(shí)例分析一w 分析問(wèn)題F步驟步驟1:確定存儲(chǔ)過(guò)程所需輸入變量:確定

14、存儲(chǔ)過(guò)程所需輸入變量F步驟步驟2:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程F步驟步驟3:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能輸入?yún)?shù)輸入?yún)?shù)page22實(shí)例分析一w 問(wèn)題求解F步驟步驟1:確定存儲(chǔ)過(guò)程所需輸入變量:確定存儲(chǔ)過(guò)程所需輸入變量 確定參數(shù)名: classCourseName 確定參數(shù)的數(shù)據(jù)類型: varchar(20)F注注 意意 在確定輸入?yún)?shù)數(shù)據(jù)類型時(shí),最好和數(shù)據(jù)庫(kù)定義的相關(guān)字段匹配page23實(shí)例分析一w 問(wèn)題求解F步驟步驟2:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程CREATE PROCEDURE getstuByname( stuName varcha

15、r(20)ASBEGINSELECT *FROM studentWHERE sname= stunameENDpage24實(shí)例分析一w 問(wèn)題求解F步驟步驟3:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能輸入?yún)?shù)輸入?yún)?shù) EXEC stuByName 王芳page25實(shí)例分析二:存儲(chǔ)過(guò)程用輸出參數(shù)返回值w 課堂練習(xí)一:F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出某類音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢出某類歌曲的平均價(jià)格。歌曲的平均價(jià)格。w 課堂練習(xí)二:F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢?cè)谀硞€(gè)音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠查詢?cè)?/p>

16、某個(gè)價(jià)格范圍內(nèi)的歌曲的信息。價(jià)格范圍內(nèi)的歌曲的信息。w 課堂練習(xí)三:F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠?qū)⒅付▽W(xué)生的指定課程分?jǐn)?shù)提高指定的分?jǐn)?shù)。夠?qū)⒅付▽W(xué)生的指定課程分?jǐn)?shù)提高指定的分?jǐn)?shù)。注意:在存儲(chǔ)過(guò)注意:在存儲(chǔ)過(guò)程總傳入?yún)?shù)的時(shí)候,只能是變量或者常量。不允許使用函數(shù)動(dòng)程總傳入?yún)?shù)的時(shí)候,只能是變量或者常量。不允許使用函數(shù)動(dòng)態(tài)計(jì)算態(tài)計(jì)算F 課堂練習(xí)四: 在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠?qū)⒅冈趯W(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠?qū)⒅付ǖ膶W(xué)生信息插入到定的學(xué)生信息插入到st

17、udent表中。表中。 page26實(shí)例分析二:存儲(chǔ)過(guò)程用輸出參數(shù)返回值w 提出問(wèn)題F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠查詢出程能夠查詢出指定課程指定課程的平均分、最高分和最低分并將這些的平均分、最高分和最低分并將這些查詢出的值返回。查詢出的值返回。page27實(shí)例分析二w 分析問(wèn)題F步驟步驟1:確定存儲(chǔ)過(guò)程所需輸入變量:確定存儲(chǔ)過(guò)程所需輸入變量F步驟步驟2:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程F步驟步驟3:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其是否能輸入和輸出參數(shù)輸入和輸出參數(shù)page28page29

18、實(shí)例分析二w 問(wèn)題求解F步驟步驟1:確定存儲(chǔ)過(guò)程所需輸入變量:確定存儲(chǔ)過(guò)程所需輸入變量 確定參數(shù) - 輸入?yún)?shù):cname varchar(20) -指定課程名稱 - 輸出參數(shù):avg int OUTPUT max int OUTPUT min float OUTPUT -返回指定課程的信息 注 意:輸出參數(shù)必須要用OUTPUT標(biāo)識(shí)page30實(shí)例分析二w 問(wèn)題求解F步驟步驟2:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程:創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程CREATE PROCEDURE prcClass_Student (cname varchar(20)=,avg float OUTPUT, max int OUTPUT,m

19、in int OUTPUT)ASBEGINSELECT avg = avg(degree), max = max(degree),min=min(degree) FROM ScoreGroup by cnameHaving cname=cnameENDpage31實(shí)例分析二w 問(wèn)題求解F步驟步驟3:驗(yàn)證存儲(chǔ)過(guò)程是否能輸入和輸出參數(shù),查詢:驗(yàn)證存儲(chǔ)過(guò)程是否能輸入和輸出參數(shù),查詢“王芳王芳同學(xué)的選課率。同學(xué)的選課率。DECLARE avg float, max int, min int EXEC prcClass_Student 操作系統(tǒng)操作系統(tǒng),avg OUTPUT,max OUTPUT,min

20、 OUTPUTpage32實(shí)例分析二w 結(jié)果分析F代碼通過(guò)調(diào)用存儲(chǔ)過(guò)程代碼通過(guò)調(diào)用存儲(chǔ)過(guò)程prcClass_Student,傳入?yún)?shù),傳入?yún)?shù)“操作系操作系統(tǒng)統(tǒng)”,返回該課程的選課信息。,返回該課程的選課信息。F輸出參數(shù)輸出參數(shù)和和用來(lái)接收返回?cái)?shù)據(jù)的變量用來(lái)接收返回?cái)?shù)據(jù)的變量的數(shù)據(jù)類型和位置必須匹配,的數(shù)據(jù)類型和位置必須匹配,并且用來(lái)接收返回值的參數(shù)也必須標(biāo)識(shí)并且用來(lái)接收返回值的參數(shù)也必須標(biāo)識(shí)OUTPUT。 F實(shí)例中存儲(chǔ)過(guò)程用輸入?yún)?shù)和輸出參數(shù)與外部進(jìn)行數(shù)據(jù)交互,利實(shí)例中存儲(chǔ)過(guò)程用輸入?yún)?shù)和輸出參數(shù)與外部進(jìn)行數(shù)據(jù)交互,利用輸入和輸出參數(shù)能給程序帶來(lái)更大的靈活性。用輸入和輸出參數(shù)能給程序帶來(lái)更大

21、的靈活性。page33實(shí)例分析二:存儲(chǔ)過(guò)程用輸出參數(shù)返回值w 課堂練習(xí)一:F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠返回某位歌音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠返回某位歌手所唱的歌曲名字,價(jià)格和類別。手所唱的歌曲名字,價(jià)格和類別。w 課堂練習(xí)二:F音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠所有歌曲中音樂(lè)信息管理系統(tǒng)中創(chuàng)建存儲(chǔ)過(guò)程,磁存儲(chǔ)過(guò)程能夠所有歌曲中的最貴的,最便宜的和均價(jià)。的最貴的,最便宜的和均價(jià)。 w 課堂練習(xí)三:F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠返回出指定張旭老師教的科目中最低分的

22、學(xué)生姓名和分?jǐn)?shù)。夠返回出指定張旭老師教的科目中最低分的學(xué)生姓名和分?jǐn)?shù)。w 課堂練習(xí)四:F在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能在學(xué)生成績(jī)管理系統(tǒng)中,需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程能夠返回指定學(xué)生的指定科目的的分?jǐn)?shù)。夠返回指定學(xué)生的指定科目的的分?jǐn)?shù)。page34存儲(chǔ)過(guò)程用默認(rèn)值參數(shù) 通過(guò)存儲(chǔ)過(guò)程的輸出參數(shù),可以對(duì)外部調(diào)用對(duì)象返回一個(gè)或多個(gè)通過(guò)存儲(chǔ)過(guò)程的輸出參數(shù),可以對(duì)外部調(diào)用對(duì)象返回一個(gè)或多個(gè)值,同樣在存儲(chǔ)過(guò)程中還有另一種方式可以返回值值,同樣在存儲(chǔ)過(guò)程中還有另一種方式可以返回值使用使用RETURN關(guān)鍵字。關(guān)鍵字。w 使用RETURN只能返回單個(gè)值,并且是整型值。它通常返回下

23、列值:F操作過(guò)程中受影響的行數(shù)操作過(guò)程中受影響的行數(shù)F錯(cuò)誤編碼錯(cuò)誤編碼F插入到插入到 IDENTITY 列中的值列中的值page35存儲(chǔ)過(guò)程用RETURN返回值 通過(guò)存儲(chǔ)過(guò)程的輸出參數(shù),可以對(duì)外部調(diào)用對(duì)象返回一個(gè)或多個(gè)通過(guò)存儲(chǔ)過(guò)程的輸出參數(shù),可以對(duì)外部調(diào)用對(duì)象返回一個(gè)或多個(gè)值,同樣在存儲(chǔ)過(guò)程中還有另一種方式可以返回值值,同樣在存儲(chǔ)過(guò)程中還有另一種方式可以返回值使用使用RETURN關(guān)鍵字。關(guān)鍵字。w 使用RETURN只能返回單個(gè)值,并且是整型值。它通常返回下列值:F操作過(guò)程中受影響的行數(shù)操作過(guò)程中受影響的行數(shù)F錯(cuò)誤編碼錯(cuò)誤編碼F插入到插入到 IDENTITY 列中的值列中的值page36實(shí)例分析

24、三w 提出問(wèn)題F創(chuàng)建存儲(chǔ)過(guò)程以查看創(chuàng)建存儲(chǔ)過(guò)程以查看指定老師指定老師所授選修課的信息,并向調(diào)用所授選修課的信息,并向調(diào)用對(duì)象對(duì)象返回一個(gè)消息返回一個(gè)消息,表明查詢結(jié)果。,表明查詢結(jié)果。page37實(shí)例分析三w 分析問(wèn)題F步驟步驟1:確定使用:確定使用RETURN返回單個(gè)值,作為輸出消息返回單個(gè)值,作為輸出消息F步驟步驟2:創(chuàng)建存儲(chǔ)過(guò)程:創(chuàng)建存儲(chǔ)過(guò)程F步驟步驟3:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能page38實(shí)例分析三w 問(wèn)題求解FRETURN語(yǔ)句的語(yǔ)法為:語(yǔ)句的語(yǔ)法為: RETURN integer_expressionF步驟步驟1:確定使用:確定使用RETURN返回單個(gè)值,作

25、為輸出消息返回單個(gè)值,作為輸出消息 RETURN 1表示查詢成功,找到所需記錄 RETURN 0表示查詢失敗,沒(méi)有發(fā)現(xiàn)有效記錄page39實(shí)例分析三w 問(wèn)題求解F步驟步驟2:創(chuàng)建存儲(chǔ)過(guò)程:創(chuàng)建存儲(chǔ)過(guò)程CREATE PROCEDURE prcListClassesByTeacherName(classTeacherName varchar(16)ASBEGINIF exists(SELECT * FROM COURSEWHERE classTeacherName=classTeacherName)BEGINRETURN 1 ENDELSEBEGINRETURN 0ENDENDpage40實(shí)例分析

26、三w 問(wèn)題求解F步驟步驟3:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能 DECLARE result intEXEC result = prcListClassesByTeacherName 朱紫英 IF(result=1) PRINT 存在相關(guān)信息 ELSE PRINT 沒(méi)有相關(guān)信息F注注 意:意: RETURN 不能返回NULL。若試圖返回NULL,將生成警告信息并返回 0 page41存儲(chǔ)過(guò)程的高級(jí)應(yīng)用w 存儲(chǔ)過(guò)程的高級(jí)應(yīng)用包括:F存儲(chǔ)過(guò)程間的調(diào)用存儲(chǔ)過(guò)程間的調(diào)用F在存儲(chǔ)過(guò)程中使用游標(biāo)在存儲(chǔ)過(guò)程中使用游標(biāo)page42實(shí)例分析四:存儲(chǔ)過(guò)程間的調(diào)用w 提出問(wèn)題F現(xiàn)在需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程在場(chǎng)景一的基礎(chǔ)上現(xiàn)在需要建立一個(gè)存儲(chǔ)過(guò)程,此存儲(chǔ)過(guò)程在場(chǎng)景一的基礎(chǔ)上能夠查詢查看能夠查詢查看多門(mén)課程多門(mén)課程的相關(guān)信息。的相關(guān)信息。 page43實(shí)例分析四w 分析問(wèn)題F步驟步驟1:創(chuàng)建:創(chuàng)建調(diào)用現(xiàn)有存儲(chǔ)過(guò)程調(diào)用現(xiàn)有存儲(chǔ)過(guò)程的存儲(chǔ)過(guò)程的存儲(chǔ)過(guò)程F步驟步驟2:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能:執(zhí)行存儲(chǔ)過(guò)程,驗(yàn)證其功能page44實(shí)例分析四w 問(wèn)題求解F步驟步

溫馨提示

  • 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)論