




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實驗報告六(1)課程名稱數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用實驗日期11.21(計科1301ZB)11.28(計科1101B)實驗項目名稱數(shù)據(jù)庫編程(1)實驗地點1#609實驗類型驗證型 設(shè)計型綜合型 學(xué) 時2一、實驗?zāi)康募耙螅ū緦嶒炈婕安⒁笳莆盏闹R點)1、 掌握流程控制語句的使用。2、 掌握游標(biāo)、存儲過程的定義和使用二、實驗環(huán)境(本實驗所使用的硬件設(shè)備和相關(guān)軟件)硬件:微型計算機(jī)軟件:Windows XP操作系統(tǒng);SQL Server2005數(shù)據(jù)庫管理系統(tǒng);Eclipse三、實驗內(nèi)容及步驟一、流程控制語句:1、BEGINEND包括一系列的Transact-SQL語句,從而可以執(zhí)行一組Transact-SQL語句。語法如下:BEGIN sql_statement END參數(shù)含義如下。sql_statement 使用語句塊定義的任何有效的Transact-SQL語句或語句組。2、IFELSE指定Transact-SQL語句的執(zhí)行條件。 語法如下:IF 邏輯表達(dá)式 sql_statement ELSEsql_statement 3、WHILE設(shè)置重復(fù)執(zhí)行SQL語句或語句塊的條件。 語法如下:WHILE 邏輯表達(dá)式 sql_statement 4、BREAK與CONTINUE可以使用BREAK和CONTINUE關(guān)鍵字在循環(huán)內(nèi)部控制WHILE循環(huán)中語句的執(zhí)行。 BREAK用于退出最內(nèi)層的WHILE循環(huán);CONTINUE用于重新開始下一次WHILE循環(huán),在CONTINUE關(guān)鍵字之后的語句都不會被執(zhí)行,而是跳轉(zhuǎn)到循環(huán)開始的地方繼續(xù)執(zhí)行。5、流程控制語句舉例:求100以內(nèi)的奇數(shù)之和declare num int,sum intset num=0set sum=0while num100begin set num=num+1if num%2=0 continueelseset sum=sum+numendprint sum6、WAITFOR語法格式:WaitFor Delay time |time time 例1:首先顯示學(xué)生表的信息,延時10秒鐘后再顯示課程表的信息use MyDBgoselect * from studentgowaitfor delay 00:00:10go select * from courseGo例2、在早上八點執(zhí)行存儲過程 myproBeginWaitfor time 8:00Exec myproEnd 7、GoTo GOTO語句將一個批的執(zhí)行轉(zhuǎn)到另一個有標(biāo)號的語句。跳過GOTO后面的Transact-SQL語句,并從標(biāo)號位置繼續(xù)處理。例:使用以下語句重新計算從1 加到100 的值。DECLARE Result int ,n intSET n=0SET Result=0Loop_1: /*定義標(biāo)號*/SET Result=Result+nSET n=n+1IF n89 then 優(yōu)秀 when grade79 and grade69 and grade 59 and grade 70 then 及格 else 不及格end As 成績級別from student,course,scwhere student.sno=sc.snoand o=oand sname=李勇【任務(wù)1】1、求10!。2、從st數(shù)據(jù)庫中查詢所有學(xué)生選課成績情況,包括如下信息:姓名、課程名、成績。要求:凡是成績?yōu)榭照咻敵觯骸拔纯肌?、小?0分的輸出“不及格”;6070分的輸出“及格”;7080分的輸出“中”;8090分的輸出“良好”;90100分的輸出“優(yōu)秀”。并且輸出記錄按下列要求排序:先按學(xué)號升序,再按課程號升序,最后按成績降序排序。二、游標(biāo) 一個對表進(jìn)行操作的T_SQL語句通常都可產(chǎn)生或處理一組記錄,但是許多應(yīng)用程序,通常不能把整個結(jié)果集作為一個單元來處理,這些應(yīng)用程序就需要一種機(jī)制來保證每次處理結(jié)果集中的一行或幾行,游標(biāo)就提供了這種機(jī)制。Sql Server通過游標(biāo)提供了對一個結(jié)果集進(jìn)行逐行處理的能力,游標(biāo)可看作一種特殊的指針,她與某個查詢結(jié)果相聯(lián)系,可以指向結(jié)果集的任意位置,以便對指定位置的數(shù)據(jù)進(jìn)行處理。使用游標(biāo)可以在查詢數(shù)據(jù)的同時對數(shù)據(jù)進(jìn)行處理。每一個游標(biāo)必須有四個組成部分這四個關(guān)鍵部分必須符合下面的順序;1. 聲明游標(biāo) (DECLARE 游標(biāo) )2.打開游標(biāo) (OPEN 游標(biāo))3.讀取游標(biāo)中數(shù)據(jù)(從一個游標(biāo)中FETCH 信息)4.關(guān)閉或刪除游標(biāo)(CLOSE 或DEALLOCATE 游標(biāo))(1)聲明游標(biāo)其語法格式如下:DECLARE cursor_name CURSORSCROLLFOR select_statementFOR READ ONLY | UPDATE OF column_name ,.n其中:cursor_name指游標(biāo)的名字。 SCROLL表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用該保留字,那么只能進(jìn)行NEXT 提取操作。由此可見,SCROLL 極大地增加了提取數(shù)據(jù)的靈活性,可以隨意讀取結(jié)果集中的任一行數(shù)據(jù)記錄,而不必關(guān)閉再重開游標(biāo)。 select_statement是定義結(jié)果集的SELECT 語句。UPDATE OF column_name,n定義在游標(biāo)中可被修改的列,如果不指出要更新的列,那么所有的列都將被更新。(2)打開游標(biāo)聲明游標(biāo)后,要使用游標(biāo)從中提取數(shù)據(jù),就必須先打開游標(biāo)。使用open語句打開游標(biāo)。其格式為:Open 游標(biāo)名打開游標(biāo)后,可以使用全局變量CURSOR_ROWS查看游標(biāo)中數(shù)據(jù)行的數(shù)目。(3)讀取數(shù)據(jù)。其格式為:Fetch next|prior|first|last|absolute n |relativ nFrom 游標(biāo)名Into 變量列表說明:next|prior|first|last|absolute n |relativ n:用于說明讀取數(shù)據(jù)的位置。Next說明讀取當(dāng)前行的下一行,并且使其為當(dāng)前行。Prior說明讀取當(dāng)前行的前一行,并且使其為當(dāng)前行。Absolute n 如果n為正數(shù),則讀取從游標(biāo)頭開始的第n行,并將讀取的行變成新的當(dāng)前行。如果n為負(fù)數(shù),則讀取游標(biāo)尾之前的第n行,并將讀取的行變成新的當(dāng)前行。如果n為0,則沒有返回行。Ralative n如果n為正數(shù),則讀取當(dāng)前行之后的第n行,并將讀取的行變成新的當(dāng)前行。如果n為負(fù)數(shù),則當(dāng)前行之前的第n行,并將讀取的行變成新的當(dāng)前行。如果n為0,則讀取當(dāng)前行。(4)關(guān)閉游標(biāo)游標(biāo)使用完畢后要及時關(guān)閉。關(guān)閉游標(biāo)用Close 其格式為:Close 游標(biāo)名(5)刪除游標(biāo)游標(biāo)關(guān)閉后,其定義仍在,需要時可用open語句打開它再使用。若確認(rèn)游標(biāo)不再需要,就要釋放其定義占用的系統(tǒng)空間,即刪除游標(biāo)。刪除游標(biāo)用Deallocate語句。其格式為:Deallocate 游標(biāo)名。(6)和游標(biāo)相關(guān)的函數(shù)FETCH_STATUS 返回針對連接當(dāng)前打開的任何游標(biāo)發(fā)出的上一條游標(biāo) FETCH 語句的狀態(tài)。返回類型 integer 返回值如下表:返回值 說明 0FETCH 語句成功。-1FETCH 語句失敗或行不在結(jié)果集中。-2提取的行不存在。CURSOR_ROWS全局變量CURSOR_ROWS中保存著最后打開的游標(biāo)中的數(shù)據(jù)行數(shù)。當(dāng)其值為0時,表示沒有游標(biāo)打開;當(dāng)其值為m(m為正整數(shù))時,m時游標(biāo)中的數(shù)據(jù)行數(shù)。例1定義一個只可向前讀取數(shù)據(jù)的游標(biāo)定義declare myfirstcursor cursorforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=o打開open myfirstcursorgo讀取fetch next from myfirstcursorGo關(guān)閉游標(biāo)close myfirstcursor刪除游標(biāo)deallocate myfirstcursor例2定義一個可以向任意位置讀取數(shù)據(jù)的游標(biāo)declare mysecondcursor cursorscrollforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=o打開open mysecondcursorgo讀取fetch next from mysecondcursorGo按絕對位置讀取fetch absolute 3 from mysecondcursor按相對位置讀取fetch relative -2 from mysecondcursor讀取最后一條記錄fetch last from mysecondcursorgo關(guān)閉游標(biāo)close mysecondcursor刪除游標(biāo)deallocate mysecondcursor例3定義一個可以向任意位置讀取數(shù)據(jù)的游標(biāo),利用游標(biāo)逐個讀取數(shù)據(jù)定義declare mythirdcursor cursorscrollforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=ogo打開Open mythirdcursorgo讀取fetch first from mythirdcursorgowhile fetch_status-1 fetch next from mythirdcursor關(guān)閉Close mythirdcursor刪除Deallocate mythirdcursor【任務(wù)2】在st數(shù)據(jù)庫中完成以下作業(yè)(1)利用游標(biāo)查找所有計科系的學(xué)生信息(2)定義可以向任意位置讀取數(shù)據(jù)的游標(biāo),顯示學(xué)生姓名、選修的門數(shù)、和平均成績。并順序逐個讀取其中的數(shù)據(jù)。然后分別顯示第3條記錄,第1條記錄和最后1條記錄。(3)創(chuàng)建一游標(biāo),逐行顯示Student表中的記錄,要求按學(xué)號+-+姓名+-+性別+-+所在系格式輸出。三、存儲過程存儲過程類似一個函數(shù)定義存儲過程的語法(詳細(xì)語法可以參考SQL Server聯(lián)機(jī)叢書) CREATE PROCEDURE 存儲過程名 參數(shù)1 數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT, , 參數(shù)n 數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT AS SQL語句 GO和C語言的函數(shù)一樣,參數(shù)可選參數(shù)分為輸入?yún)?shù)、輸出參數(shù) 輸入?yún)?shù)允許有默認(rèn)值 設(shè)計1(無默認(rèn)值 無輸出型)CREATE PROCEDURE proc_stu testgrade int -成績 AS print 查詢成績高于給定成績的學(xué)生成績信息SELECT sname 學(xué)生姓名,cname 課程名,grade 成績from Student,course,scwhere student.sno=sc.snoand o=oand gradetestgrade GO調(diào)用 exec proc_stu 80設(shè)計2(有默認(rèn)值 有輸出型)CREATE PROCEDURE proc_stu1count int OUTPUT, sdept char(2)=cs ASSELECT sdept 所在系FROM studentWhere sdept=sdeptGroup by sdept SELECT count=count(*)FROM studentWhere sdept=sdeptGroup by sde
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ??漆t(yī)院人才流動與薪酬體系分析
- 修車設(shè)備租借合同標(biāo)準(zhǔn)文本
- 醫(yī)療數(shù)據(jù)挖掘驅(qū)動醫(yī)療行業(yè)變革的力量
- 上海導(dǎo)游合同范例
- H型高血壓的臨床護(hù)理
- 上有貸款合同范例
- 曼特波隆鼻的臨床護(hù)理
- 小兒眼科健康教育課件
- 小隱靜脈曲張的臨床護(hù)理
- 醫(yī)療行業(yè)的職業(yè)道德與患者隱私保護(hù)的融合
- 2023北京順義區(qū)招錄鄉(xiāng)村振興協(xié)理員及考察筆試歷年典型考題及考點剖析附答案帶詳解
- 跟著音樂游中國智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 傳統(tǒng)文化醒獅模板
- 教科版四年級上冊科學(xué)第一單元《聲音》測試卷附答案(精練)
- (高清版)JTGT D81-2017 公路交通安全設(shè)施設(shè)計細(xì)則
- QC/T 629-2021 汽車遮陽板-PDF解密
- FZT 64056-2015 潔凈室用擦拭布
- 小學(xué)數(shù)學(xué)五年級下冊通分練習(xí)100題附答案
- 混凝土強(qiáng)度評定表(自動計算)
- 人音版四年級音樂下冊全冊教學(xué)設(shè)計教案表格式
- 心臟體格檢查教案
評論
0/150
提交評論