數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 6.7游標(biāo)的使用_第1頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 6.7游標(biāo)的使用_第2頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 6.7游標(biāo)的使用_第3頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 6.7游標(biāo)的使用_第4頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 6.7游標(biāo)的使用_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫基礎(chǔ)(基于達夢DM8)數(shù)據(jù)庫程序設(shè)計66.7游標(biāo)的使用0203游標(biāo)變量(引用游標(biāo))動態(tài)游標(biāo)04使用游標(biāo)FOR循環(huán)01靜態(tài)游標(biāo)6.7.1靜態(tài)游標(biāo)靜態(tài)游標(biāo)是只讀游標(biāo),它總是按照打開游標(biāo)時的原樣顯示結(jié)果集,在編譯時就能確定靜態(tài)游標(biāo)使用的查詢。靜態(tài)游標(biāo)隱式游標(biāo)顯式游標(biāo)6.7.1靜態(tài)游標(biāo)-隱式游標(biāo)隱式游標(biāo)無須用戶進行定義,每當(dāng)用戶在DMSQL程序中執(zhí)行一個DML語句(INSERT、UPDATE、DELETE)或者SELECT...INTO語句時,DMSQL程序都會自動聲明一個隱式游標(biāo)并管理這個游標(biāo)。隱式游標(biāo)的名稱為“SQL”,用戶可以通過隱式游標(biāo)獲取語句執(zhí)行的一些信息。DMSQL程序中的每個游標(biāo)都有號%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT四個屬性,對于隱式游標(biāo),這四個屬性的意義如下:6.7.1靜態(tài)游標(biāo)-隱式游標(biāo)%FOUND:語句是否修改或查詢到了記錄,是返回TRUE,否則返回FALSE;%NOTFOUND:語句是否未能成功修改或查詢到記錄,是返回TRUE,否則返回FALSE;%ISOPEN:游標(biāo)是否打開。是返回TRUE,否返回FALSE。由于系統(tǒng)在語句執(zhí)行完成后會自動關(guān)閉隱式游標(biāo),因此隱式游標(biāo)的各ISOPEN屬性永遠(yuǎn)為FALSE;%ROWCOUNT:DML語句執(zhí)行影響的行數(shù),或SELECT...INTO語句返回的行數(shù)。6.7.1靜態(tài)游標(biāo)-顯式游標(biāo)顯式游標(biāo)指向一個查詢語句執(zhí)行后的結(jié)果集區(qū)域。當(dāng)需要處理返回多條記錄的查詢時,應(yīng)顯式地定義游標(biāo)以處理結(jié)果集地每一行。使用顯式游標(biāo)一般包括下面幾個步驟:1)定義游標(biāo):在DMSQL程序的聲明部分定義游標(biāo),聲明游標(biāo)及其關(guān)聯(lián)的查詢語句;2)打開游標(biāo):執(zhí)行游標(biāo)關(guān)聯(lián)的語句,將查詢結(jié)果裝入游標(biāo)工作區(qū),將游標(biāo)定位到結(jié)果集的第一行之前;3)撥動游標(biāo):根據(jù)應(yīng)用需要將游標(biāo)位置移動到結(jié)果集的合適位置;4)關(guān)閉游標(biāo):游標(biāo)使用完后應(yīng)關(guān)閉,以釋放其占有的資源。6.7.1靜態(tài)游標(biāo)-顯式游標(biāo)1)定義游標(biāo):在DMSQL程序的聲明部分定義游標(biāo),聲明游標(biāo)及其關(guān)聯(lián)的查詢語句;CURSOR<游標(biāo)名>[FAST|NOFAST]<cursor選項>;或<游標(biāo)名>CURSOR[FAST|NOFAST]<cursor選項>;必須先定義一個游標(biāo),之后才能在別的語句中使用它。定義顯式游標(biāo)時指定游標(biāo)名和與其關(guān)聯(lián)的查詢語句。可以指定游標(biāo)的返回類型,也可以指定關(guān)聯(lián)的查詢語句中的WHERE子句使用的參數(shù)。6.7.1靜態(tài)游標(biāo)-顯式游標(biāo)2)打開游標(biāo):執(zhí)行游標(biāo)關(guān)聯(lián)的語句,將查詢結(jié)果裝入游標(biāo)工作區(qū),將游標(biāo)定位到結(jié)果集的第一行之前;OPEN<游標(biāo)名>;指定打開的游標(biāo)必須是已定義的游標(biāo),此時系統(tǒng)執(zhí)行這個游標(biāo)所關(guān)聯(lián)的查詢語句,獲得結(jié)果集,并將游標(biāo)定位到結(jié)果集的第一行之前。當(dāng)再次打開一個已打開的游標(biāo)時,游標(biāo)會被重新初始化,游標(biāo)屬性數(shù)據(jù)可能會發(fā)生變化。6.7.1靜態(tài)游標(biāo)-顯式游標(biāo)3)撥動游標(biāo):根據(jù)應(yīng)用需要將游標(biāo)位置移動到結(jié)果集的合適位置;FETCH[<fetch選項>[FROM]]<游標(biāo)名>[[BULKCOLLECT]INTO<主變量名>{,<主變量名>}][LIMIT<rows>];<fetch選項>::=NEXT|PRIOR|FIRST|LAST|ABSOLUTEn|RELATIVEn應(yīng)注意,被撥動的游標(biāo)必須是已打開的游標(biāo)。6.7.1靜態(tài)游標(biāo)-顯式游標(biāo)4)關(guān)閉游標(biāo):游標(biāo)使用完后應(yīng)關(guān)閉,以釋放其占有的資源。游標(biāo)在使用完后應(yīng)及時關(guān)閉,以釋放它所占用的內(nèi)存空間。當(dāng)游標(biāo)關(guān)閉后,不能再從游標(biāo)中獲取數(shù)據(jù),否則將報錯。如果需要,可以再次打開游標(biāo)。CLOSE<游標(biāo)名>;6.7.2動態(tài)游標(biāo)與靜態(tài)游標(biāo)不同,動態(tài)游標(biāo)在聲明部分只是先聲明一個游標(biāo)類型的變量,并不指定其關(guān)聯(lián)的查詢語句,在執(zhí)行部分打開游標(biāo)時才指定查詢語句。動態(tài)游標(biāo)的使用主要在定義和打開時與顯式游標(biāo)不同,下面進行詳細(xì)介紹,撥動游標(biāo)與關(guān)閉游標(biāo)可參考靜態(tài)游標(biāo)中的介紹。6.7.2動態(tài)游標(biāo)1.定義動態(tài)游標(biāo)定義動態(tài)游標(biāo)的語法如下:CURSOR<游標(biāo)名>;6.7.2動態(tài)游標(biāo)2.打開動態(tài)游標(biāo)打開動態(tài)游標(biāo)的語法如下:OPEN<游標(biāo)名><for表達式>;<for表達式>::=<for_item1>|<for_item2><for_item1>::=FOR<查詢表達式><for_item2>::=FOR<表達式>[USING<綁定參數(shù)>{,<綁定參數(shù)>}]動態(tài)游標(biāo)在OPEN時通過FOR子句指定與其關(guān)聯(lián)的查詢語句。動態(tài)游標(biāo)關(guān)聯(lián)的查詢語句還可以帶有參數(shù),參數(shù)以“?”指定,同時在打開游標(biāo)語句中使用USING子句指定參數(shù),且參數(shù)的個數(shù)和類型與語句中的“?”必須一一匹配。6.7.3游標(biāo)變量(引用游標(biāo))游標(biāo)變量不是真正的游標(biāo)對象,而是指向游標(biāo)對象的一個指針,因此是一種引用類型,也可以稱為引用游標(biāo)。定義游標(biāo)變量的語法如下。:<游標(biāo)變量名>CURSOR[:=<源游標(biāo)名>];或TYPE<類型名>ISREFCURSOR[RETURN<DMSQL數(shù)據(jù)類型>];<游標(biāo)變量名><類型名>;6.7.3游標(biāo)變量(引用游標(biāo))引用游標(biāo)不局限于一個查詢,可以為一個查詢聲明或者打開一個引用游標(biāo),然后對其結(jié)果集進行處理,之后又可以將這個引用游標(biāo)為其他的查詢打開;可以對引用游標(biāo)進行賦值;可以像用一個變量一樣在一個表達式中使用引用游標(biāo);引用游標(biāo)可以作為一個子程序的參數(shù);可以使用引用游標(biāo)在DMSQL程序的不同子程序中傳遞結(jié)果集。6.7.4使用游標(biāo)FOR循環(huán)游標(biāo)通常與循環(huán)聯(lián)合使用,以遍歷結(jié)果集數(shù)據(jù)。實際上,DMSQL程序還提供了一種將兩者綜合在一起的語句,即游標(biāo)FOR循環(huán)語句。游標(biāo)FOR循環(huán)自動使用FOR循環(huán)依次讀取結(jié)果集中的數(shù)據(jù)。當(dāng)FOR循環(huán)開始時,游標(biāo)會自動打開(不需要使用OPEN方法);每循環(huán)一次系統(tǒng)自動讀取游標(biāo)當(dāng)前行的數(shù)據(jù)(不需要使用FETCH);當(dāng)數(shù)據(jù)遍歷完畢退出FOR循環(huán)時,游標(biāo)被自動關(guān)閉(不需要使用CLOSE),大大降低了應(yīng)用程序的復(fù)雜度。6.7.4使用游標(biāo)FOR循環(huán)(1)隱式游標(biāo)FOR循環(huán)FOR<cursor_record>IN(<查詢語句>)LOOP<執(zhí)行部分>ENDLOOP;其中,<cursor_record>是一個記錄類型的變量。它是DMSQL程序根據(jù)SQL查詢語句結(jié)果的%ROWTYPE類型隱式聲明出來的,不需要顯式聲明。也不能顯式聲明一個與<cursor_record>同名的記錄,會導(dǎo)致邏輯錯誤。FOR循環(huán)不斷地將行數(shù)據(jù)讀入變量<cursor_record>中,在循環(huán)中也可以存取<cursor_record>中的字段。6.7.4使用游標(biāo)FOR循環(huán)(2)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論