版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1回顧聲明變量系名,為系名賦值“computer”,查找該系的平均年齡,賦值給變量@avgStuAge,并顯示變量的值。2思考:要查詢1號學生對應的姓名。
解決方案:SELECTStuNameFROMStudentWHEREStuID=‘A00001’要查詢2號學生對應的姓名。
解決方案:SELECTStuNameFROMStudentWHEREStuID=‘A00002’要查詢3號直至n號學生對應的姓名。
解決方案:SELECTStuNameFROMStudentWHEREStuID=?SELECTStuNameFROMStudentWHEREStuID=@StuID
用戶輸入:A00005Student(StuID,StuName,StuAge,StuSex,StuScore,DepID)3第七章
存儲過程-輸入?yún)?shù)4目標存儲過程的概念創(chuàng)建帶有參數(shù)的存儲過程(輸入?yún)?shù))存儲過程的調(diào)用57.1存儲過程存儲過程(StoredProcedure)是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。6存儲過程的分類系統(tǒng)存儲過程:SQLServer內(nèi)置的存儲過程,存儲在master庫中,主要用途是執(zhí)行SQLServer的某些管理功能、顯示有關(guān)數(shù)據(jù)庫和用戶的信息。系統(tǒng)存儲過程名以SP_開頭,可以在任何數(shù)據(jù)庫中執(zhí)行系統(tǒng)存儲過程。用戶存儲過程:用戶自行創(chuàng)建并存儲在用戶數(shù)據(jù)庫中的存儲過程。77.1.2創(chuàng)建存儲過程語法:CREATEPROC[EDURE]存儲過程名[{@參數(shù)數(shù)據(jù)類型}[=默認值][,...n]ASSQL語句[...n]8引例:用戶輸入:A000058CREATEPROCprcGetNameASSELECTStuNameFROMStudentWHEREStuID=@StuID帶有輸入?yún)?shù)存儲過程的語法9CREATEPROCprcGetName
@StuIDSELECTStuNameFROMStudentWHEREStuID=@StuIDdeclarechar(5)AS@StuIDchar(10)語法:CREATE
輸入?yún)?shù)PROC[EDURE]存儲過程名[{@參數(shù)數(shù)據(jù)類型}[=默認值][,...n]]ASSQL語句[...n]用戶輸入:A00005結(jié)論1:存儲過程的輸入?yún)?shù)是由用戶需要提供的實際參數(shù)而決定的解決方案: EXECprcGetName‘A00005’10存儲過程的執(zhí)行(調(diào)用)語法:
EXEC存儲過程名實參[,…n]解決方案:CREATEPROCAS11示例使用存儲過程實現(xiàn)由用戶輸入學生的學號及課程名稱,根據(jù)輸入的信息,顯示相應的成績,如果成績大于等于60分,則顯示pass,否則顯示failed。prcGetScore@StuIDchar(10),@CourseNamevarchar(20)解決方案:CREATEPROCAS12示例使用存儲過程實現(xiàn)由用戶輸入學生的學號及課程名稱,根據(jù)輸入的信息,顯示相應的成績,如果成績大于等于60分,則顯示pass,否則顯示failed。prcGetScore@StuIDchar(10),@CourseNamevarchar(20)DECLARE@GradeintSET@Grade=0IF@Grade<60PRINT‘failed’ELSEPRINT‘pass’SELECTFROMONWHEREScoreSCJOINCourseSC.CourseID=Course.CourseIDStuID=
and
CourseName=@StuID@CourseName@Grade=用戶輸入:EXECprcGetScore’A00001’,’DataBase’用戶輸入1:EXECprcGetScore’A00001’用戶輸入2:EXECprcGetScore’DataBase’,’A00001’結(jié)論2:調(diào)用存儲過程時,用戶輸入的實參個數(shù)必須與輸入?yún)?shù)個數(shù)一致,且一一對應。13思考使用存儲過程實現(xiàn)由用戶輸入學生的學號及課程名稱,根據(jù)輸入的信息,顯示相應的成績,如果成績小于60分,則向ReExam(StuID,CourseID,Score)表中插入一條記錄。解決方案:CREATEPROCprcReExam@StuIDchar(10),@CourseNamevarchar(20)AS…DECLARE@CourseIDintSET@CourseID=0SELECT@CourseID=CourseIDFROMCourseWHERECourseName=@CourseNameIF@Grade<60INSERTINTOReExamVALUES(@StuID,@CourseID,@Grade)假設用戶輸入的值違反約束性規(guī)則。147.4TRY-CATCH結(jié)構(gòu)BEGINTRY
SQL語句…ENDTRYBEGINCATCH
錯誤處理語句…ENDCATCH15改進的程序CREATEPROCprcReExam@StuIDchar(10),@CourseNamevarchar(20)AS
BEGINTRYDECLARE@GradeintSET@Grade=0DECLARE@CourseIDintSET@CourseID=0SELECT@Grade=Score,@CourseID=SC.CourseIDFROMSCJOINCourseONSC.CourseID=Course.CourseIDWHEREStuID=@StuIDandCourseName=@CourseNameIF@Grade<60
insertintoReExamvalues(@StuID,@CourseID,@Grade)ENDTRYBEGINCATCHPRINT‘輸入數(shù)據(jù)有誤,學號以A,B或Z打頭,后跟5位數(shù)字’ENDCATCH假設用戶輸入一個不存在的課程名?167.5IFEXISTS語句IFEXISTS語句用來判斷某條信息是否存在例如,查詢1號學生的成績之前可以先判斷A00001號學生是否存在,存在則查詢,不存在提示用戶該學生不存在??蓪懗桑篒FEXISTS(SELECT*FROMStudentWHEREStuID=‘A00001’) SELECT*FROMSCWHEREStuID=‘A00001’andCourseID=1ELSE PRINT’該學生不存在!’17存儲過程結(jié)構(gòu)CREATEPROC存儲過程名@參數(shù)名參數(shù)類型[,…n]ASBEGINTRY IFEXISTS() BEGIN //執(zhí)行功能 END ELSE //信息不存在ENDTRYBEGINCATCH //錯誤提示信息ENDCATCH請繼續(xù)改進前頁的程序!execprcReExam'A00001',‘database‘execprcReExam'A00002',‘math'18練習存儲過程由用戶輸入系名,顯示該系的總?cè)藬?shù)和平均年齡。197.6存儲過程的返回值可以在存儲過程中使用RETURN語句返回一個值示例:寫一存儲過程由用戶輸入學號和課程號,返回該門課程學生獲得的學分。Course(CourseID,CourseName,Credit)20CREATEprocprcGetCredit@StuIDchar(10),@CourseIDintAs
…IFEXISTS(SELECT*FROMSCWHEREStuID=@StuIDand
CourseID=@CourseID)
BEGIN DECLARE@Gradefloat,@Creditint SELECT@Grade=ScoreFROMSCWHEREStuID=@StuIDandCourseID=@CourseIDIF@Grade>=60 BEGINSELECT@Credit=CreditFROMCourseWHERECourseID=@CourseID RETURN@CreditENDELSERETURN0
END ELSERETURN-1
…用戶輸入:declare@ReturnValueintexec@ReturnValue=prcGetCreditInfo‘A00001’,1print@ReturnValue注意:RETURN只能返回整數(shù)21RETURN返回狀態(tài)值示例:寫一個存儲過程,查找某個學生是否選修了某門課程,如果選修了則返回1,否則返回0,錯誤返回-1.解決方案:CREATEPROCprcIsCourseSelected@StuIDchar(10),@CourseIDintASBEGINTRYifexists(select*fromSCwhereStuID=@StuIDandCourseID=@CourseID)return1elsereturn0ENDTRYBEGINCATCHreturn-1ENDCATCH思考:如果根據(jù)課程號返回相應課程名,該如何操作?22練習寫一存儲過程,根
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 來料檢驗年終總結(jié)思考(3篇)
- 關(guān)于誠信的優(yōu)美段落
- 鄭州2025年河南登封市招聘教師135人筆試歷年參考題庫附帶答案詳解
- 衡水2025年河北衡水棗強縣事業(yè)單位選聘5人筆試歷年參考題庫附帶答案詳解
- 濱州2025年山東濱州無棣縣招錄社區(qū)工作者25人筆試歷年參考題庫附帶答案詳解
- 河北2025年河北工程大學分析測試實驗中心博士人才招聘筆試歷年參考題庫附帶答案詳解
- 杭州2025年下半年浙江杭州科技職業(yè)技術(shù)學院人才引進(招聘)筆試歷年參考題庫附帶答案詳解
- 撫州2025年江西撫州市宜黃縣總醫(yī)院招聘46人筆試歷年參考題庫附帶答案詳解
- 慶陽2025年甘肅慶陽市林業(yè)和草原局所屬事業(yè)單位選調(diào)筆試歷年參考題庫附帶答案詳解
- 山東2025年山東城市建設職業(yè)學院招聘44人筆試歷年參考題庫附帶答案詳解
- 南京旅館住宿管理辦法
- 【香港職業(yè)訓練局(VTC)】人力調(diào)查報告書2024-珠寶、鐘表及眼鏡業(yè)(繁體版)
- 急性呼吸衰竭的診斷與治療
- 客戶分配管理辦法管理
- 燃氣入戶安檢培訓
- 高中地理思政融合課《全球氣候變暖》
- 裝修施工獎罰管理制度
- 2025年中考語文一輪復習:民俗類散文閱讀 講義(含練習題及答案)
- 2023-2024學年八年級(上)期末數(shù)學試卷
- DB33T 1238-2021 智慧燈桿技術(shù)標準
- 福建省泉州市晉江市2023-2024學年八年級上學期期末考試數(shù)學試卷(含解析)
評論
0/150
提交評論