oracle游標(biāo)使用方法及語法大全

oracle游標(biāo)使用方法及語法大全

ID:14868858

大小:932.00 KB

頁數(shù):54頁

時(shí)間:2018-07-30

oracle游標(biāo)使用方法及語法大全_第1頁
oracle游標(biāo)使用方法及語法大全_第2頁
oracle游標(biāo)使用方法及語法大全_第3頁
oracle游標(biāo)使用方法及語法大全_第4頁
oracle游標(biāo)使用方法及語法大全_第5頁
資源描述:

《oracle游標(biāo)使用方法及語法大全》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Oracle游標(biāo)使用方法及語法大全當(dāng)查詢返回結(jié)果超過一行時(shí),就需要一個(gè)顯式游標(biāo),此時(shí)用戶不能使用selectinto語句。PL/SQL管理隱式游標(biāo),當(dāng)查詢開始時(shí)隱式游標(biāo)打開,查詢結(jié)束時(shí)隱式游標(biāo)自動(dòng)關(guān)閉。顯式游標(biāo)在PL/SQL塊的聲明部分聲明,在執(zhí)行部分或異常處理部分打開,取出數(shù)據(jù),關(guān)閉。使用游標(biāo)語法:例:SETSERVERIUTPUTONDECLARER_empEMP%ROWTYPE;CURSORc_empISselect*fromemp;BEGINOPENc_emp;LoopFETCHc_empintor_emp;EX

2、ITWHENC_EMP%NOTFOUND;Dbms_output.put_line(’SalaryofEmployee’

3、

4、r_emp.ename

5、

6、’is’)Endloop;Closec_emp;End;%ROWTYPE也可以用游標(biāo)名來定義,這樣的話就必須要首先聲明游標(biāo):Forrecord_nameIN(corsor_name[(parameter[,parameter]…)]

7、(query_difinition)loopStatementsEndloop;下面我們用for循環(huán)重寫上面的例子:在游標(biāo)FOR循環(huán)中

8、使用查詢?cè)谟螛?biāo)FOR循環(huán)中可以定義查詢,由于沒有顯式聲明所以游標(biāo)沒有名字,記錄名通過游標(biāo)查詢來定義。游標(biāo)中的子查詢語法如下:可以看出與SQL中的子查詢有沒什么區(qū)別。游標(biāo)中的更新和刪除在PL/SQL中依然可以使用UPDATE和DELETE語句更新或刪除數(shù)據(jù)行。顯示游標(biāo)只有在需要獲得多行數(shù)據(jù)的情況下使用。PL/SQL提供了僅僅使用游標(biāo)就可以執(zhí)行刪除或更新記錄的方法。UPDATE或DELETE語句中的WHERECURRENTOF子串專門處理要執(zhí)行UPDATE或DELETE操作的表中取出的最近的數(shù)據(jù)。要使用這個(gè)方法,在聲明游標(biāo)時(shí)

9、必須使用FORUPDATE子串,當(dāng)對(duì)話使用FORUPDATE子串打開一個(gè)游標(biāo)時(shí),所有返回集中的數(shù)據(jù)行都將處于行級(jí)(ROW-LEVEL)獨(dú)占式鎖定,其他對(duì)象只能查詢這些數(shù)據(jù)行,不能進(jìn)行UPDATE、DELETE或SELECT...FORUPDATE操作。語法:在多表查詢中,使用OF自居來鎖定特定的表,如果忽略了OF子句,那么所有表中選擇的數(shù)據(jù)行都將被鎖定。如果這些數(shù)據(jù)行已經(jīng)被其他會(huì)話鎖定,那么正常情況下oracle將等待,直到數(shù)據(jù)行解鎖。在UPDATE和DELETE中使用WHERECURRENTOF子串的語法如下:WHER

10、E{CURRENTOFcursor_name

11、search_condition}實(shí)例:??DECLARECURSORc1ISSELECTempno,salFROMempWHEREcommISNULLFORUPDATEOFcomm;v_commNUMBER(10,2);BEGINFORr1INc1LOOPIFr1.sal<500THENv_comm:=r1.sal*0.25;ELSIFr1.sal<1000THENv_comm:=r1.sal*0.20;ELSIFr1.sal<3000THENv_comm:=r1.sal*

12、0.15;ELSEv_comm:=r1.sal*0.12;ENDIF;UPDATEempSETcomm=v_commWHERECURRENTOFc1;ENDLOOP;END;/=====================================================oracle隱式游標(biāo),顯示游標(biāo),游標(biāo)循環(huán)動(dòng)態(tài)SELECT語句和動(dòng)態(tài)游標(biāo),異常處理,自定義異常游標(biāo)的概念:???游標(biāo)是SQL的一個(gè)內(nèi)存工作區(qū),由系統(tǒng)或用戶以變量的形式定義。游標(biāo)的作用就是用于臨時(shí)存儲(chǔ)從數(shù)據(jù)庫中提取的數(shù)據(jù)塊。在某些情況下,需要把數(shù)據(jù)

13、從存放在磁盤的表中調(diào)到計(jì)算機(jī)內(nèi)存中進(jìn)行處理,最后將處理結(jié)果顯示出來或最終寫回?cái)?shù)據(jù)庫。這樣數(shù)據(jù)處理的速度才會(huì)提高,否則頻繁的磁盤數(shù)據(jù)交換會(huì)降低效率。游標(biāo)有兩種類型:顯式游標(biāo)和隱式游標(biāo)。在前述程序中用到的SELECT...INTO...查詢語句,一次只能從數(shù)據(jù)庫中提取一行數(shù)據(jù),對(duì)于這種形式的查詢和DML操作,系統(tǒng)都會(huì)使用一個(gè)隱式游標(biāo)。但是如果要提取多行數(shù)據(jù),就要由程序員定義一個(gè)顯式游標(biāo),并通過與游標(biāo)有關(guān)的語句進(jìn)行處理。顯式游標(biāo)對(duì)應(yīng)一個(gè)返回結(jié)果為多行多列的SELECT語句。游標(biāo)一旦打開,數(shù)據(jù)就從數(shù)據(jù)庫中傳送到游標(biāo)變量中,然后應(yīng)

14、用程序再從游標(biāo)變量中分解出需要的數(shù)據(jù),并進(jìn)行處理。隱式游標(biāo):如前所述,DML操作和單行SELECT語句會(huì)使用隱式游標(biāo),它們是:*插入操作:INSERT。*更新操作:UPDATE。*刪除操作:DELETE。*單行查詢操作:SELECT...INTO...。當(dāng)系統(tǒng)使用一個(gè)隱式游標(biāo)時(shí),可以通過隱式游標(biāo)的屬性來了解操作的狀態(tài)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。