ORACLE游標(biāo)的創(chuàng)建與應(yīng)用ppt課件_第1頁
ORACLE游標(biāo)的創(chuàng)建與應(yīng)用ppt課件_第2頁
ORACLE游標(biāo)的創(chuàng)建與應(yīng)用ppt課件_第3頁
ORACLE游標(biāo)的創(chuàng)建與應(yīng)用ppt課件_第4頁
ORACLE游標(biāo)的創(chuàng)建與應(yīng)用ppt課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、7.1 游標(biāo)的創(chuàng)建與應(yīng)用,經(jīng)1106 徐曉碩 學(xué)號20111189,1. 游標(biāo)的概念,2. 顯式游標(biāo),4.隱式游標(biāo),1.游標(biāo)的概念,背景由來 當(dāng)SELECT語句在PL/SQL程序塊中使用時, 要求查詢結(jié)果中只能包含一條記錄, 若查詢出來的數(shù)據(jù)多于一行,則執(zhí)行出錯。 這時候就需要用到游標(biāo)。,1.游標(biāo)的概念,Oracle游標(biāo)的概念 游標(biāo)是ORACLE系統(tǒng)在內(nèi)存中開辟的一個工作區(qū),在其中存放SELECT語句返回的查詢結(jié)果。這個查詢結(jié)果既可以是零記錄,單條記錄,也可以是多條記錄.在游標(biāo)所定義的工作區(qū)中,存在著一個指針(POINTER),在初始狀態(tài)它指向查詢結(jié)果的首記錄.,1.游標(biāo)的概念,Oracle游

2、標(biāo)的類型 隱式游標(biāo): 是oracle為所有數(shù)據(jù)操縱語句(包括只返回單行數(shù)據(jù)的查詢語句)自動聲明和操作的一種游標(biāo)(名字是sql)。顯式游標(biāo): 用戶顯示聲明的游標(biāo),即指定結(jié)果集。當(dāng)查詢返回結(jié)果超過一行時,就需要一個顯式游標(biāo)。,2.顯式游標(biāo),顯式游標(biāo)的使用過程,1.定義游標(biāo) 2.打開游標(biāo) 3.提取游標(biāo) 4.處理數(shù)據(jù) 5.關(guān)閉游標(biāo),1.定義游標(biāo),語法: CURSOR 游標(biāo)名 IS SELECT語句; 例子: CURSOR c1 IS SELECT*FROM emp;,2.打開游標(biāo),語法: OPEN 游標(biāo)名 ; 例子: OPEN c1 ;,3.提取數(shù)據(jù),游標(biāo)被打開后,使用FETCH語句獲取游標(biāo)正在指向的

3、結(jié)果集中的記錄,語句執(zhí)行后游標(biāo)的指針自動下移,指向下一條記錄。 每執(zhí)行一次FETCH語句,游標(biāo)只獲取一行記錄。,3.提取數(shù)據(jù),語法: FETCH 游標(biāo)名 INTO 變量名; 例子: FETCH c1 INTO emp_rec; 其中emp_rec是已定義好的和emp 結(jié)構(gòu)相同的記錄變量。,4.處理數(shù)據(jù),上一步已經(jīng)將游標(biāo)指向的當(dāng)期行記錄通過FETCH語句提取出來并放到變量(emp_rec)中,接下來就可以對這些變量中的數(shù)據(jù)進(jìn)行處理了。 例:將emp_rec中的數(shù)據(jù)輸出 dbms_output.put_line(姓名是:|emp_rec.ename);,5.關(guān)閉游標(biāo),語法: CLOSE 游標(biāo)名;

4、例子: CLOSE c1;,首先創(chuàng)建一個表,查看表中的信息,游標(biāo)的聲明與使用,游標(biāo)的聲明與使用,每執(zhí)行一次FETCH語句,游標(biāo)只獲取一行記錄,5次FETCH操作,游標(biāo)的聲明與使用,FETCH語句指向最后記錄,將不再移動,6次FETCH操作,2.顯式游標(biāo),游標(biāo)的常用屬性,1.%ISOPEN 屬性 2.%FOUND 屬性 3.%NOTFOUND屬性 4.%ROWCOUNT屬性,1.%ISOPEN屬性,判斷游標(biāo)是否打開。打開返回值為TURE, 未打開返回值為FALSE。 語法: 游標(biāo)名%ISOPEN; 例子: IF c1%ISOPEN THEN ;,2.%FOUND屬性,判斷游標(biāo)是否從結(jié)果集中取到數(shù)

5、據(jù)。取到返回值為TURE, 未取到返回值為FALSE。 語法: 游標(biāo)名%FOUND; 例子: IF c1%FOUND THEN ;,3.%NOTFOUND屬性,與%FOUND相反。未取到數(shù)據(jù)返回值為TURE, 取到數(shù)據(jù)返回值為FALSE。 語法: 游標(biāo)名%NOTFOUND; 例子: IF c1%NOTFOUND THEN ;,4.%ROWCOUNT屬性,表示游標(biāo)從查詢結(jié)果集中已經(jīng)獲取到的記錄總數(shù)。 語法: 游標(biāo)名%ROWCOUNT; 例子: FETCH c1 INTO emp_rec; IF c1%ROWCOUNT10 THEN ;,2.顯式游標(biāo),顯式游標(biāo)的循環(huán),1.游標(biāo)的LOOP循環(huán) 2.游

6、標(biāo)的FOR 循環(huán),1.游標(biāo)的LOOP循環(huán),語法: LOOP FETCH 游標(biāo)名INTO 變量名; EXIT WHEN 游標(biāo)名%NOTFOUND;ENDLOOP; LOOP循環(huán)中的FETCH語句重復(fù)執(zhí)行,當(dāng)FETCH語句不能從游標(biāo)的當(dāng)前行取出數(shù)據(jù)時,循環(huán)結(jié)束。,游標(biāo)的聲明與使用,2.游標(biāo)的FOR循環(huán) 語法: FOR 變量名 IN 游標(biāo)名 LOOP 數(shù)據(jù)處理語句; END LOOP;,2.游標(biāo)的FOR循環(huán) 特點(diǎn): FOR循環(huán)中循環(huán)控制變量不需要事先定義 FOR循環(huán)之前,系統(tǒng)能自動打開游標(biāo);循環(huán)結(jié)束后,系統(tǒng)自動關(guān)閉游標(biāo)。 FOR循環(huán)過程中,自動執(zhí)行FETCH語句。,3.帶參數(shù)的游標(biāo),背景由來 在前面

7、介紹游標(biāo)的例子中,SELECT語句都沒有WHERE子句,或者用WHERE子句指定了一個固定的條件,這樣每次都查詢同樣的數(shù)據(jù)。在更多的情況下,可能要根據(jù)實(shí)際情況查詢不同的數(shù)據(jù)。要怎么辦?,3.帶參數(shù)的游標(biāo),背景由來 為了通過游標(biāo)對數(shù)據(jù)進(jìn)行更加靈活的處理,可以為游標(biāo)定義參數(shù),這些參數(shù)可以用在WHERE子句中。在打開游標(biāo)時,指定實(shí)際的參數(shù)值,這樣游標(biāo)在每次打開時,可以根據(jù)不同的實(shí)際參數(shù)值,返回所需的不同數(shù)據(jù)。,3.帶參數(shù)的游標(biāo),定義格式 語法: CURSOR 游標(biāo)名(參數(shù)名 數(shù)據(jù)類型 DEFAULT 默認(rèn)值) IS SELECT語句; 參數(shù)需要指明參數(shù)名及其數(shù)據(jù)類型。 參數(shù)只定義數(shù)據(jù)類型,沒有大小。 可以給參數(shù)設(shè)定一個缺省值,當(dāng)沒有參數(shù)值傳遞給游標(biāo)時,就使用缺省值。,4.隱式游標(biāo),背景由來 DML操作和單行SELECT語句會使用隱式游標(biāo)(名字是sql),它們是: * 插入操作:INSERT。 * 更新操作:U

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論