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