




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Transact-SQL流控制語句局部變量和全局變量局部變量和全局變量 l局部變量是在批或存儲過程中聲明使用的。l全局變量是SQL Server提供的特殊函數(shù) 。l聲明局部變量:ldeclare 變量名 數(shù)據(jù)類型,.nl局部變量賦值: lselect 變量名=表達(dá)式lset 變量名=表達(dá)式程序控制語句程序控制語句1 BEGIN.END語句l相當(dāng)于C語言中的大括號或復(fù)合語句,它將多條T-SQL語句封裝成為一個(gè)整體的語句塊。通常把BEGIN.END語句放在語句IF.ElSE或者WHILE中,使其中的語句作為一個(gè)整體來執(zhí)行。 BEGIN T-SQL語句塊 ENDlT-SQL中可以使用嵌套的BEGIN
2、.END語句。2 PRINT語句l用于將用戶定義的消息返回到客戶端。PRINT 字符文本| local_variable| global_variable| string_expr 3 IF.ELSE語句l選擇結(jié)構(gòu),用于進(jìn)行條件判斷,它可以進(jìn)行批處理、存儲過程或特殊查詢,并且可以嵌套使用。 IF 布爾表達(dá)式 sql語句|語句塊 ElSE sql語句|語句塊 布爾表達(dá)式中可以含有select語句,必須用圓括號將select語句括起來。例例- IF.ELSE語句語句if (select count(*) from T_opt,T_lesson where and T_opt.Lid=T_lesso
3、n.Lid and lname=數(shù)據(jù)庫原理 and score80)0begin print 數(shù)據(jù)庫原理課程的分?jǐn)?shù)低于80分! select s.sid, s.sname,o.score from T_student s join T_opt g on s.sid=o.sid join T_lesson l on l.Lid=o.Lid where o.score80 and l.lname=數(shù)據(jù)庫原理endelseprint 數(shù)據(jù)庫原理課程的分?jǐn)?shù)均高于80分4 CASE語句l多分支條件語句 CASE WHEN 條件1 THEN 值1 WHEN 條件2 THEN 值2 . END例:根據(jù)課時(shí)確
4、定學(xué)分例:根據(jù)課時(shí)確定學(xué)分declare lclasses intdeclare lgrade intset lclasses=64-select lclasses=lclasses from T_lesson where Lid=01set lgrade=casewhen lclasses=32 then 2when lclasses =64 then 4when lclasses =80 then 5endprint lgrade例:根據(jù)成績確定級別例:根據(jù)成績確定級別select Sid as 學(xué)號, level=casewhen score60 and score80 then per
5、fectendfrom T_opt where Lid=111015 WHILE語句l條件循環(huán)語句,在滿足條件時(shí)執(zhí)行循環(huán)體,不滿足條件時(shí)跳出循環(huán)結(jié)構(gòu)。lWHILE語句可以嵌套執(zhí)行。 WHILE 布爾表達(dá)式 sql語句|語句塊 lCONTINUE語句:使程序跳過CONTINUE語句后面的語句,回到WHILE循環(huán)的第一行命令。lBREAK語句:使程序完全跳出循環(huán),結(jié)束WHILE語句的執(zhí)行。 例:打印從例:打印從1到到4這這4個(gè)數(shù)字個(gè)數(shù)字declare i intset i=0while(i4)beginset i=i+1print iend打印乘法口訣表打印乘法口訣表declare i int,j
6、 intset i=1set j=1while(i=9)beginwhile(j10beginprint var1returnendelsegoto Here8 WAITFOR語句l指定觸發(fā)語句塊、存儲過程或事務(wù)執(zhí)行的時(shí)間、時(shí)間間隔或事件。 lWAITFOR delay:延遲(時(shí)間間隔)執(zhí)行后面的語句lWAITFOR time:指定語句執(zhí)行的時(shí)間l時(shí)間格式:hh:mm:ss等待1小時(shí)零分零12秒后執(zhí)行select語句 WAITFOR delay 01:00:12 Select * from T_studentl最長延遲時(shí)間24小時(shí)等到11點(diǎn)30分后才執(zhí)行select 語句 WAITFOR ti
7、me 11:30:00 Slect * from T_student 按datetime格式賦值,不能指定日期游標(biāo)游標(biāo)l1 定義l定義一個(gè)游標(biāo)標(biāo)識名,并把游標(biāo)標(biāo)識名和一個(gè)查詢語句關(guān)聯(lián)起來。l用DECLARE語句聲明游標(biāo),通過SELECT查詢定義游標(biāo)存儲的數(shù)據(jù)集合。l語句格式為: DECLARE 游標(biāo)名稱 INSENSITIVE SCROLL CURSOR FOR select 語句 FORREAD ONLY|UPDATEOF 列名字表 游標(biāo)游標(biāo)l參數(shù)說明:lINSENSITIVE選項(xiàng):說明所定義的游標(biāo)使用SELECT語句查詢結(jié)果的拷貝,對游標(biāo)的操作都基于該拷貝進(jìn)行。因此,這期間對游標(biāo)基本表的數(shù)
8、據(jù)修改不能反映到游標(biāo)中。這種游標(biāo)也不允許通過它修改基本表的數(shù)據(jù)。 lSCROLL選項(xiàng):指定該游標(biāo)可用所有的游標(biāo)數(shù)據(jù)定位方法提取數(shù)據(jù),游標(biāo)定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 選項(xiàng)。游標(biāo)游標(biāo)l參數(shù)說明:lSelect語句:為標(biāo)準(zhǔn)的SELECT查詢語句,其查詢結(jié)果為游標(biāo)的數(shù)據(jù)集合,構(gòu)成游標(biāo)數(shù)據(jù)集合的一個(gè)或多個(gè)表稱作游標(biāo)的基表。 在游標(biāo)聲明語句中,有下列條件之一時(shí),系統(tǒng)自動(dòng)把游標(biāo)定義為INSENSITIVE游標(biāo): SELECT語句中使用了DISTINCT、UNION、 GROUP BY或HAVING等關(guān)鍵字; 任一個(gè)游標(biāo)基表中不存在唯一索引。 l
9、READ ONLY選項(xiàng):說明定義只讀游標(biāo)。 lUPDATE OF 列名表選項(xiàng):定義游標(biāo)可修改的列。如果使用OF 列名表選項(xiàng),說明只允許修改所指定的列,否則,所有列均可修改。 游標(biāo)游標(biāo)l例如,定義游標(biāo)TCURSOR,關(guān)聯(lián)課程名字及相應(yīng)選課的學(xué)生:declare Tcursor cursor forselect k_name,sidfrom course,scorewhere course.kid=score.kid游標(biāo)游標(biāo)l2 打開l打開游標(biāo)語句執(zhí)行游標(biāo)定義中的查詢語句,查詢結(jié)果存放在游標(biāo)緩沖區(qū)中。并使游標(biāo)指針指向游標(biāo)區(qū)中的第一個(gè)元組,作為游標(biāo)的缺省訪問位置。l打開游標(biāo)的語句格式: EXEC S
10、QL OPEN 游標(biāo)名 如果打開的游標(biāo)為INSENSITIVE游標(biāo),在打開時(shí)將產(chǎn)生一個(gè)臨時(shí)表,將定義的游標(biāo)數(shù)據(jù)集合從其基表中拷貝過來。 游標(biāo)游標(biāo)l3 讀游標(biāo)區(qū)中的元組lFETCH NEXT|PRIOR|FIRST|LAST| ABSOLUTE n| RELATIVE n FROM 游標(biāo)名 INTO 變量1, 變量2, . 游標(biāo)游標(biāo)l3 讀游標(biāo)區(qū)中的元組lNEXT:讀取游標(biāo)中的下一行,第一次對游標(biāo)實(shí)行讀取操作時(shí),NEXT返回結(jié)果集合中的第一行。 lPRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 選項(xiàng)只適用于SCROLL游標(biāo)。它們分別說明讀取游標(biāo)中的上一行、第一行、
11、最后一行、第n 行和相對于當(dāng)前位置的第n 行。n 為負(fù)值時(shí),ABSOLUTE n 和RELATIVE n 說明讀取從游標(biāo)結(jié)果集合中的最后一行或當(dāng)前行倒數(shù)n行的數(shù)據(jù)。 lINTO子句 說明將讀取的數(shù)據(jù)存放到指定的局部變量中,每一個(gè)變量的數(shù)據(jù)類型應(yīng)與游標(biāo)所返回的數(shù)據(jù)類型嚴(yán)格匹配,否則將產(chǎn)生錯(cuò)誤。游標(biāo)游標(biāo)l4. 利用游標(biāo)修改數(shù)據(jù)l通過游標(biāo)修改或刪除游標(biāo)基表中的當(dāng)前數(shù)據(jù)行。 UPDATE語句的格式為: UPDATE table_name SET 列名=表達(dá)式,n WHERE CURRENT OF cursor_name lDELETE語句的格式為: DELETE FROM table_name WHERE CURRENT OF cursor_name l說明: CURRENT OF cursor_name: 表示當(dāng)前游標(biāo)指針?biāo)傅漠?dāng)前行數(shù)據(jù)。CURRENT OF 只能在UPDATE和DELETE語句中使用。 游標(biāo)游標(biāo)l5. 關(guān)閉游標(biāo) l關(guān)閉游標(biāo)后,游標(biāo)區(qū)的數(shù)據(jù)不可再讀。lCLOSE語句關(guān)閉已打開的游標(biāo),之后不能對游標(biāo)進(jìn)行讀取等操作,但可以使用OPEN語
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文具及類似用品戰(zhàn)略市場規(guī)劃報(bào)告
- 自動(dòng)絡(luò)筒機(jī)市場分析及競爭策略分析報(bào)告
- 包服務(wù)合同范本
- 企業(yè)股東股權(quán)合同范本
- 變更屬于合同范本
- 世界紅十字日紀(jì)念演講稿
- 中藥炮制工中級練習(xí)題及參考答案
- 少年兒童健康試題(附參考答案)
- 建筑制圖及識圖模擬習(xí)題及參考答案
- 《風(fēng)箏》大班教案
- 2024~2025學(xué)年度八年級數(shù)學(xué)上冊第1課時(shí) 負(fù)整數(shù)指數(shù)冪教學(xué)設(shè)計(jì)
- 2024年江西省吉安市遂川縣初中教師業(yè)務(wù)素養(yǎng)檢測試卷歷史試題
- 2024至2030年中國特鋼行業(yè)“十四五”分析及發(fā)展前景預(yù)測研究分析報(bào)告
- 小兒急性腸炎查房課件
- DL∕T 2024-2019 大型調(diào)相機(jī)型式試驗(yàn)導(dǎo)則
- 2024年蘇州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫附答案
- 術(shù)后惡心嘔吐防治專家意見
- MOOC 醫(yī)學(xué)免疫學(xué)-南昌大學(xué) 中國大學(xué)慕課答案
- JB-T 8640-2014 額定電壓26-35kV及以下電力電纜附件型號編制方法
- 社會保障卡辦理委托書
- 微積分(第三版)課件:多元函數(shù)微積分
評論
0/150
提交評論