版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第三章游標(biāo)的定義和使用17第三章第三章游標(biāo)的定義和使用游標(biāo)的定義和使用3.13.1游標(biāo)的分類游標(biāo)的分類前面介紹的前面介紹的語句只能處理返回一行數(shù)據(jù)的情況,當(dāng)語句只能處理返回一行數(shù)據(jù)的情況,當(dāng)語句返回多個(gè)數(shù)據(jù)語句返回多個(gè)數(shù)據(jù)行時(shí),必須使用游標(biāo)。行時(shí),必須使用游標(biāo)。游標(biāo)是指向游標(biāo)是指向語句查詢出的多行數(shù)據(jù)的指針語句查詢出的多行數(shù)據(jù)的指針,語句查詢出的行組成一結(jié)語句查詢出的行組成一結(jié)果表,稱為果表,稱為活動(dòng)集活動(dòng)集。游標(biāo)指向的行稱為當(dāng)前行。一
2、般說來,游標(biāo)分為三類:。游標(biāo)指向的行稱為當(dāng)前行。一般說來,游標(biāo)分為三類:(1)(1)滾動(dòng)游標(biāo)滾動(dòng)游標(biāo)(2)(2)非滾動(dòng)游標(biāo)非滾動(dòng)游標(biāo)(3)(3)更新游標(biāo)更新游標(biāo)滾動(dòng)游標(biāo)是指程序可以根據(jù)需要指向活動(dòng)集的某一行數(shù)據(jù),即滾動(dòng)游標(biāo)是指程序可以根據(jù)需要指向活動(dòng)集的某一行數(shù)據(jù),即游標(biāo)的位置可來回移動(dòng)游標(biāo)的位置可來回移動(dòng)。非滾動(dòng)游標(biāo)是指活動(dòng)集中的非滾動(dòng)游標(biāo)是指活動(dòng)集中的每行只能依次被讀出每行只能依次被讀出。更新游標(biāo)是非滾動(dòng)游標(biāo)更新游標(biāo)是非滾動(dòng)游標(biāo),它
3、的特點(diǎn)在于:,它的特點(diǎn)在于:數(shù)據(jù)庫對(duì)游標(biāo)指向的當(dāng)前行加鎖,當(dāng)程序讀下一行數(shù)據(jù)時(shí),本行數(shù)據(jù)解鎖,下一行數(shù)據(jù)加數(shù)據(jù)庫對(duì)游標(biāo)指向的當(dāng)前行加鎖,當(dāng)程序讀下一行數(shù)據(jù)時(shí),本行數(shù)據(jù)解鎖,下一行數(shù)據(jù)加鎖。鎖加在數(shù)據(jù)庫基本表對(duì)應(yīng)的行上。鎖。鎖加在數(shù)據(jù)庫基本表對(duì)應(yīng)的行上。另外一種分類方法是將另外一種分類方法是將ESQLCESQLC提供的游標(biāo)分為兩種類型,提供的游標(biāo)分為兩種類型,游標(biāo)游標(biāo)和游標(biāo)游標(biāo),游標(biāo)用于處理查詢結(jié)果為多行數(shù)據(jù)的游標(biāo)用于處理查詢結(jié)果為多行數(shù)
4、據(jù)的語句;語句;游標(biāo)用于成塊地往數(shù)據(jù)游標(biāo)用于成塊地往數(shù)據(jù)庫中插入數(shù)據(jù)。庫中插入數(shù)據(jù)。3.23.2定義與使用游標(biāo)的語句定義與使用游標(biāo)的語句定義和使用游標(biāo)的語句以及與游標(biāo)相關(guān)的語句有五個(gè):定義和使用游標(biāo)的語句以及與游標(biāo)相關(guān)的語句有五個(gè):(1)DECLARE(1)DECLARE語句語句這條語句用來定義游標(biāo),其一般形式是:這條語句用來定義游標(biāo),其一般形式是:DECLAREDECLARE游標(biāo)名游標(biāo)名[SCROLL][SCROLL]CURSCURS
5、FF語句語句有關(guān)鍵字有關(guān)鍵字SCROLLSCROLL的DECLAREDECLARE語句定義的是滾動(dòng)游標(biāo)。語句定義的是滾動(dòng)游標(biāo)。語句可表為:語句可表為:子句子句[INTO[INTO子句子句]FROMFROM子句子句[WHERE[WHERE子句子句][GROUP[GROUPBYBY子句子句][HAVING[HAVING子句子句][DER[DERBYBY子句子句][INTO[INTOTEMPTEMP子句子句]DECLAREDECLARE語句的
6、作用是在數(shù)據(jù)庫系統(tǒng)表中分配該游標(biāo)資源,給游標(biāo)一個(gè)自己的名字。語句的作用是在數(shù)據(jù)庫系統(tǒng)表中分配該游標(biāo)資源,給游標(biāo)一個(gè)自己的名字。游標(biāo)名的作用范圍是只要游標(biāo)不被釋放游標(biāo)名的作用范圍是只要游標(biāo)不被釋放(FREE)(FREE),在定義它的模塊內(nèi)有效。,在定義它的模塊內(nèi)有效。第三章游標(biāo)的定義和使用19使用使用游標(biāo)的步驟如下:游標(biāo)的步驟如下:(1)(1)將游標(biāo)與將游標(biāo)與語句相關(guān)系:使用語句相關(guān)系:使用declaredeclare語句將一個(gè)命名的游標(biāo)
7、與要處理的語句將一個(gè)命名的游標(biāo)與要處理的語句聯(lián)系在一起。游標(biāo)有兩種,普通游標(biāo)和滾動(dòng)游標(biāo)。在普通游標(biāo)中,用戶只能按語句聯(lián)系在一起。游標(biāo)有兩種,普通游標(biāo)和滾動(dòng)游標(biāo)。在普通游標(biāo)中,用戶只能按既定的順序來取數(shù)據(jù)。滾動(dòng)游標(biāo)允許用戶按隨機(jī)順序來取活動(dòng)集中的任一數(shù)據(jù)行。既定的順序來取數(shù)據(jù)。滾動(dòng)游標(biāo)允許用戶按隨機(jī)順序來取活動(dòng)集中的任一數(shù)據(jù)行。下面的例子中定義了滾動(dòng)游標(biāo)下面的例子中定義了滾動(dòng)游標(biāo)q_cursq_curs,將表,將表customercust
8、omer中的數(shù)據(jù)全部取出來:中的數(shù)據(jù)全部取出來:$declaredeclareq_cursq_cursscrollscrollcurscursfffromfromcustomercustomer下例定義了一普通游標(biāo),將表下例定義了一普通游標(biāo),將表customercustomer中l(wèi)namelname的值與變量的值與變量last_namelast_name的值匹配的行的值匹配的行全部取出來:全部取出來:$declaredeclarecus
9、t_curscust_curscursofcursoffffromfromcustomercustomerwherewherelnamelnamematchesmatches$last_namelast_name游標(biāo)的作用域是從說明該游標(biāo)的行到該源代碼文件尾,因此對(duì)游標(biāo)的說明必須在游標(biāo)游標(biāo)的作用域是從說明該游標(biāo)的行到該源代碼文件尾,因此對(duì)游標(biāo)的說明必須在游標(biāo)的引用之前。的引用之前。(2)(2)打開游標(biāo):打開游標(biāo):openopen語句使與
10、語句使與語句相關(guān)聯(lián)的游標(biāo)處于打開狀態(tài),所做的工作如下:語句相關(guān)聯(lián)的游標(biāo)處于打開狀態(tài),所做的工作如下:用宿主變量含有的當(dāng)前值來設(shè)定查詢語句的查詢條件,并做一些初始化處理。例如,當(dāng)語用宿主變量含有的當(dāng)前值來設(shè)定查詢語句的查詢條件,并做一些初始化處理。例如,當(dāng)語句帶有排序子句句帶有排序子句derderbyby時(shí),創(chuàng)建一臨時(shí)表存放數(shù)據(jù)。當(dāng)游標(biāo)處于打開狀態(tài)后,對(duì)宿主變時(shí),創(chuàng)建一臨時(shí)表存放數(shù)據(jù)。當(dāng)游標(biāo)處于打開狀態(tài)后,對(duì)宿主變量所做的任何改動(dòng)不再影響
11、查詢語句返回的活動(dòng)集的值。量所做的任何改動(dòng)不再影響查詢語句返回的活動(dòng)集的值。(3)(3)選取并處理數(shù)據(jù):選取并處理數(shù)據(jù):fetchfetch語句將游標(biāo)移到特定的行,并將該行數(shù)據(jù)取出,放到相應(yīng)的語句將游標(biāo)移到特定的行,并將該行數(shù)據(jù)取出,放到相應(yīng)的宿主變量中。宿主變量中。(4)(4)關(guān)閉游標(biāo):關(guān)閉游標(biāo):closeclose語句使游標(biāo)處于關(guān)閉狀態(tài)并釋放活動(dòng)集及其它所占資源。語句使游標(biāo)處于關(guān)閉狀態(tài)并釋放活動(dòng)集及其它所占資源。下面是使用游標(biāo)的程序
12、片斷下面是使用游標(biāo)的程序片斷$declaredeclarex_cursx_curscurscursffder_numder_numder_dateder_datefromfromdersderswherewherepaid_datepaid_dateisisnullnullship_date$p_dateship_date$p_dateffupdateupdateofofpaid_datepaid_date說明游標(biāo)說明游標(biāo)x_cursx
13、_curs$openopenx_cursx_curs打開游標(biāo)打開游標(biāo)x_cursx_curs$fetchfetchx_cursx_cursintointo$der_numder_num$der_dateder_date從活動(dòng)集中取出當(dāng)前行,放入宿主變量中從活動(dòng)集中取出當(dāng)前行,放入宿主變量中$updateupdatedersderssetsetpaid_datepaid_date=TODAYTODAYwherewherecurrentcu
14、rrentofofx_cursx_curs滾動(dòng)游標(biāo)可以這樣用嗎滾動(dòng)游標(biāo)可以這樣用嗎修改當(dāng)前行修改當(dāng)前行$closeclosex_cursx_curs關(guān)閉游標(biāo)關(guān)閉游標(biāo)x_cursx_curs再看一個(gè)使用滾動(dòng)游標(biāo)的例子再看一個(gè)使用滾動(dòng)游標(biāo)的例子$declaredeclareq_cursq_cursscrollscrollcurscursffder_dateder_datefromfromdersderswherewherecustomer_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論