資源描述:
《第09章 存儲過程的創(chuàng)建和使用——例題解答》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第9章存儲過程的創(chuàng)建和使用第9章存儲過程的創(chuàng)建和使用——例題解答例9-2-1:創(chuàng)建一個名稱為“StuInfo”的存儲過程,要求完成以下功能:在T_STUDENT表中查詢05541班學生的學號、姓名、性別、出生日期和政治面貌五個字段的內容。在創(chuàng)建存儲過程的窗口中,單擊“查詢”菜單,選擇“指定模板參數的值”,會彈出“指定模板參數的值”對話框。在“指定模板參數的值”對話框中將“Procedure_Name”參數對應的名稱修改為“StuInfo”,單擊“確定”按鈕,關閉此對話框。在創(chuàng)建存儲過程的窗口中將對應的SELECT語句修改為以下程序代碼:Sel
2、ectS_NUMBERAS學號,S_NAMEAS姓名,SEXAS性別,BIRTHDAYAS出生日期,POLITYAS政治面貌FROMT_STUDENTWHERELEFT(S_NUMBER,5)='05541'輸入完畢后,單擊窗口工具欄上的“執(zhí)行”按鈕執(zhí)行以上程序段,就會創(chuàng)建一個新的存儲過程“StuInfo”。例9-2-2:創(chuàng)建一個存儲過程StuScoreInfo,完成的功能是在表T_STUDENT、表T_COURSE和表t_SCORE中查詢以下字段:班級、學號、姓名、性別、課程名稱、考試分數。程序清單如下:--打開STUDENT數據庫USES
3、TUDENT--查詢是否已存在此存儲過程,如果存在,就刪除它IFEXISTS(SELECTnameFROMsysobjectsWHEREname='StuScoreInfo'ANDtype='P')DROPPROCEDUREStuScoreInfoGO第9章存儲過程的創(chuàng)建和使用--創(chuàng)建存儲過程CREATEPROCEDUREStuScoreInfoASSelect班級=SUBSTRING(T_STUDENT.S_NUMBER,1,LEN(T_STUDENT.S_NUMBER)-2),學號=SUBSTRING(T_STUDENT.S_NUMBER
4、,LEN(T_STUDENT.S_NUMBER)-1,2),S_NAMEAS姓名,SEXAS性別,T_COURSE.C_NAMEAS課程名稱,t_SCORE.SCOREAS考試分數FROMT_STUDENT,T_COURSE,t_SCOREWHERET_STUDENT.S_NUMBER=t_SCORE.S_NUMBERANDT_COURSE.C_NUMBER=t_SCORE.C_NUMBERGO例9-2-3:創(chuàng)建一個帶有參數的存儲過程Stu_Info,該存儲過程根據傳入的學生編號,在T_STUDENT中查詢此學生的信息。程序清單如下:--刪除
5、已存在的存儲過程USESTUDENTIFEXISTS(SELECTnameFROMsysobjectsWHEREname='Stu_Info'ANDtype='P')DROPPROCEDUREStu_InfoGO--創(chuàng)建存儲過程USESTUDENTGOCREATEPROCEDUREStu_Info@S_NUMBERvarchar(10)ASSelect班級=SUBSTRING(T_STUDENT.S_NUMBER,1,LEN(T_STUDENT.S_NUMBER)-2),學號=SUBSTRING(T_STUDENT.S_NUMBER,第9章存
6、儲過程的創(chuàng)建和使用LEN(T_STUDENT.S_NUMBER)-1,2),S_NAMEAS姓名,SEXAS性別,BIRTHDAYAS出生日期,POLITYAS政治面貌FROMT_STUDENTWHERES_NUMBER=@S_NUMBERGO例9-2-4:創(chuàng)建一個帶有參數的存儲過程Stu_Age,該存儲過程根據傳入的學生編號,在T_STUDENT中計算此學生的年齡,并根據程序的執(zhí)行結果返回不同的值,程序執(zhí)行成功,返回整數0,如果執(zhí)行出錯,則返回錯誤號。USESTUDENTIFEXISTS(SELECTnameFROMsysobjectsWH
7、EREname='Stu_Age'ANDtype='P')DROPPROCEDUREStu_AgeGO--創(chuàng)建存儲過程USESTUDENTGOCREATEPROCEDUREStu_Age@S_NUMBERvarchar(10),@AgeintOUTPUTAS--定義并初始化局部變量,用于保存返回值DECLARE@ErrorValueintSET@ErrorValue=0--求此學生的年齡SELECT@Age=YEAR(GETDATE())-YEAR(BIRTHDAY)FROMT_STUDENTWHERES_NUMBER=@S_NUMBER--
8、根據程序的執(zhí)行結果返回不同的值IF(@@ERROR<>0)SET@ErrorValue=@@ERRORRETURN@ErrorValue第9章存儲過程的創(chuàng)建和使用G