版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1、游標、游標游標是指向結果集的指針,它提供一種機制,可以對結果集進行逐行處理。游標分為顯式游標和隱式游標。顯式游標是acle提供的一種訪問數據的方法,讓用戶創(chuàng)建和使用;隱式游標是在執(zhí)行…into、、update、等語句時,由acle自動創(chuàng)建的一個游標,隱式游標一次只能返回一行,不能對其進行操作,由系統自動處理。2、顯式游標的使用:、顯式游標的使用:(一般用來處理一般用來處理語句返回的多行數據語句返回的多行數據)(1)聲明游標:curs
2、cursName[(arg1datatype[arg2datatype…])]is_statement解釋:cursName是游標名,arg1為游標的參數;datatype為參數類型,不能指定長度,只能是輸入類型;_statement是指定游標的查詢語句。_statment還可以加鎖,如:cursemp_cursisfromempfupdate[ofemp][nowait]解釋:多個表時of選項指定要加鎖的表;nowait選項表示鎖未添
3、加成功時,則返回并由用戶決定等待還是去執(zhí)行其他語句。(2)打開游標:打開游標時,acle會執(zhí)行游標所對應的查詢語句,并將查詢的結果集暫存到結果集中,此時結果集是靜態(tài)的,對其所作的操作不會對結果集有影響,直到關閉游標后,對其所作的操作才會在結果集中反映出來。opencurs_name打開游標,curs_name為游標名。(3)提取游標指向的數據:提取一行數據的語法:fetchcursNameintovar1var2…解釋:將cursNam
4、e指向的行的數據提取出來賦值給var1等,每執(zhí)行一次fetch語句,游標就會指向下一行。提取多行數據的語法:fetchcursNamebulkcollectintocollect1collect2…[limitrows]解釋:將游標指向的單行中的各列數據分別賦給各個變量(這里的變量相當于數組(單列多行型),保存多個值),然后取出下一行繼續(xù)賦值,直到結束,limit指定取出的行數。(4)關閉游標:提取并處理了結果集中的所有數據后,就可以關
5、閉游標并釋放其結果集了。語法:closecursName關閉游標名為cursName的游標使用無參數顯式游標的例子:declarecursemp_cursisenamesalfromempwheredeptno=10fupdate1.定義游標(即定義指向結果集的指針)一行一行的提取數據,由于后面要修改行中數據,便聲明為fupdate來加鎖v_enameemp.ename%type保存一行一行提取的數據的變量v_salemp.sal%ty
6、pecurscs_empisenamesalcommfromempwheredeptno=30定義另一個游標,提取3、隱式游標的使用:、隱式游標的使用:隱式游標是在執(zhí)行…into、、update、等語句時,由acle自動創(chuàng)建的一個游標,名稱為SQL。隱式游標一次只能返回一行,不能對其進行open、fetch、close等操作,由系統自動處理。使用隱式游標的例子:declarectnumberbeginupdateempsetcomm=1
7、00wheredeptno=20這條語句將產生一個隱式游標ct:=sql%rowcount將游標指向的數據的行數賦給ctdbms_output.put_line(有||ct||個員工的補貼被修改)打印相關信息end4、f循環(huán)對游標的使用:循環(huán)對游標的使用:使用f循環(huán)時,acle會隱含的打開游標、提取游標指向的數據和關閉游標。例一:declarecurscs_adjisfromempbeginfemincs_adjloopdbms_out
8、put.put_line(員工編號是:||em.empno||員工名是:||em.ename)endloopend例二:beginfein(enamesalfromemp)loopdbms_output.put_line(e.ename)endloopend5、游標的屬性:、游標的屬性:☆%isopen確定游標是否打開,若打開返回為TRUE,否則返回FALSE☆%found確定游標是否提取到數據,若提取到返回TRUE,否則返回FALSE
9、☆%notfound確定游標是否沒提取到數據,若提到數據返回FALSE,否則返回TRUE☆rowcount返回當前位置已提取到的行數各個游標屬性的詳細解釋:屬性屬性%FOUND%NOFOUND%ISOPEN%ROWCOUNTOPEN之前拋出A01001拋出A01001FALSE拋出A01001OPEN之后NULLNULLTRUE0第一個FETCH之前NULLNULLTRUE0第一個FETCH之后TRUEFALSETRUE1在后續(xù)的FET
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論