




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫基礎(chǔ)(基于達夢DM8)數(shù)據(jù)庫程序設(shè)計66.7游標的使用0203游標變量(引用游標)動態(tài)游標04使用游標FOR循環(huán)01靜態(tài)游標6.7.1靜態(tài)游標靜態(tài)游標是只讀游標,它總是按照打開游標時的原樣顯示結(jié)果集,在編譯時就能確定靜態(tài)游標使用的查詢。靜態(tài)游標隱式游標顯式游標6.7.1靜態(tài)游標-隱式游標隱式游標無須用戶進行定義,每當用戶在DMSQL程序中執(zhí)行一個DML語句(INSERT、UPDATE、DELETE)或者SELECT...INTO語句時,DMSQL程序都會自動聲明一個隱式游標并管理這個游標。隱式游標的名稱為“SQL”,用戶可以通過隱式游標獲取語句執(zhí)行的一些信息。DMSQL程序中的每個游標都有號%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT四個屬性,對于隱式游標,這四個屬性的意義如下:6.7.1靜態(tài)游標-隱式游標%FOUND:語句是否修改或查詢到了記錄,是返回TRUE,否則返回FALSE;%NOTFOUND:語句是否未能成功修改或查詢到記錄,是返回TRUE,否則返回FALSE;%ISOPEN:游標是否打開。是返回TRUE,否返回FALSE。由于系統(tǒng)在語句執(zhí)行完成后會自動關(guān)閉隱式游標,因此隱式游標的各ISOPEN屬性永遠為FALSE;%ROWCOUNT:DML語句執(zhí)行影響的行數(shù),或SELECT...INTO語句返回的行數(shù)。6.7.1靜態(tài)游標-顯式游標顯式游標指向一個查詢語句執(zhí)行后的結(jié)果集區(qū)域。當需要處理返回多條記錄的查詢時,應(yīng)顯式地定義游標以處理結(jié)果集地每一行。使用顯式游標一般包括下面幾個步驟:1)定義游標:在DMSQL程序的聲明部分定義游標,聲明游標及其關(guān)聯(lián)的查詢語句;2)打開游標:執(zhí)行游標關(guān)聯(lián)的語句,將查詢結(jié)果裝入游標工作區(qū),將游標定位到結(jié)果集的第一行之前;3)撥動游標:根據(jù)應(yīng)用需要將游標位置移動到結(jié)果集的合適位置;4)關(guān)閉游標:游標使用完后應(yīng)關(guān)閉,以釋放其占有的資源。6.7.1靜態(tài)游標-顯式游標1)定義游標:在DMSQL程序的聲明部分定義游標,聲明游標及其關(guān)聯(lián)的查詢語句;CURSOR<游標名>[FAST|NOFAST]<cursor選項>;或<游標名>CURSOR[FAST|NOFAST]<cursor選項>;必須先定義一個游標,之后才能在別的語句中使用它。定義顯式游標時指定游標名和與其關(guān)聯(lián)的查詢語句??梢灾付ㄓ螛说姆祷仡愋停部梢灾付P(guān)聯(lián)的查詢語句中的WHERE子句使用的參數(shù)。6.7.1靜態(tài)游標-顯式游標2)打開游標:執(zhí)行游標關(guān)聯(lián)的語句,將查詢結(jié)果裝入游標工作區(qū),將游標定位到結(jié)果集的第一行之前;OPEN<游標名>;指定打開的游標必須是已定義的游標,此時系統(tǒng)執(zhí)行這個游標所關(guān)聯(lián)的查詢語句,獲得結(jié)果集,并將游標定位到結(jié)果集的第一行之前。當再次打開一個已打開的游標時,游標會被重新初始化,游標屬性數(shù)據(jù)可能會發(fā)生變化。6.7.1靜態(tài)游標-顯式游標3)撥動游標:根據(jù)應(yīng)用需要將游標位置移動到結(jié)果集的合適位置;FETCH[<fetch選項>[FROM]]<游標名>[[BULKCOLLECT]INTO<主變量名>{,<主變量名>}][LIMIT<rows>];<fetch選項>::=NEXT|PRIOR|FIRST|LAST|ABSOLUTEn|RELATIVEn應(yīng)注意,被撥動的游標必須是已打開的游標。6.7.1靜態(tài)游標-顯式游標4)關(guān)閉游標:游標使用完后應(yīng)關(guān)閉,以釋放其占有的資源。游標在使用完后應(yīng)及時關(guān)閉,以釋放它所占用的內(nèi)存空間。當游標關(guān)閉后,不能再從游標中獲取數(shù)據(jù),否則將報錯。如果需要,可以再次打開游標。CLOSE<游標名>;6.7.2動態(tài)游標與靜態(tài)游標不同,動態(tài)游標在聲明部分只是先聲明一個游標類型的變量,并不指定其關(guān)聯(lián)的查詢語句,在執(zhí)行部分打開游標時才指定查詢語句。動態(tài)游標的使用主要在定義和打開時與顯式游標不同,下面進行詳細介紹,撥動游標與關(guān)閉游標可參考靜態(tài)游標中的介紹。6.7.2動態(tài)游標1.定義動態(tài)游標定義動態(tài)游標的語法如下:CURSOR<游標名>;6.7.2動態(tài)游標2.打開動態(tài)游標打開動態(tài)游標的語法如下:OPEN<游標名><for表達式>;<for表達式>::=<for_item1>|<for_item2><for_item1>::=FOR<查詢表達式><for_item2>::=FOR<表達式>[USING<綁定參數(shù)>{,<綁定參數(shù)>}]動態(tài)游標在OPEN時通過FOR子句指定與其關(guān)聯(lián)的查詢語句。動態(tài)游標關(guān)聯(lián)的查詢語句還可以帶有參數(shù),參數(shù)以“?”指定,同時在打開游標語句中使用USING子句指定參數(shù),且參數(shù)的個數(shù)和類型與語句中的“?”必須一一匹配。6.7.3游標變量(引用游標)游標變量不是真正的游標對象,而是指向游標對象的一個指針,因此是一種引用類型,也可以稱為引用游標。定義游標變量的語法如下。:<游標變量名>CURSOR[:=<源游標名>];或TYPE<類型名>ISREFCURSOR[RETURN<DMSQL數(shù)據(jù)類型>];<游標變量名><類型名>;6.7.3游標變量(引用游標)引用游標不局限于一個查詢,可以為一個查詢聲明或者打開一個引用游標,然后對其結(jié)果集進行處理,之后又可以將這個引用游標為其他的查詢打開;可以對引用游標進行賦值;可以像用一個變量一樣在一個表達式中使用引用游標;引用游標可以作為一個子程序的參數(shù);可以使用引用游標在DMSQL程序的不同子程序中傳遞結(jié)果集。6.7.4使用游標FOR循環(huán)游標通常與循環(huán)聯(lián)合使用,以遍歷結(jié)果集數(shù)據(jù)。實際上,DMSQL程序還提供了一種將兩者綜合在一起的語句,即游標FOR循環(huán)語句。游標FOR循環(huán)自動使用FOR循環(huán)依次讀取結(jié)果集中的數(shù)據(jù)。當FOR循環(huán)開始時,游標會自動打開(不需要使用OPEN方法);每循環(huán)一次系統(tǒng)自動讀取游標當前行的數(shù)據(jù)(不需要使用FETCH);當數(shù)據(jù)遍歷完畢退出FOR循環(huán)時,游標被自動關(guān)閉(不需要使用CLOSE),大大降低了應(yīng)用程序的復(fù)雜度。6.7.4使用游標FOR循環(huán)(1)隱式游標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使用游標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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣播電視節(jié)目制作中的編劇策略考核試卷
- 信托公司財務(wù)風險分析與控制考核試卷
- 疫情網(wǎng)課班會課件小學生
- 塑料薄膜在戶外運動裝備的應(yīng)用考核試卷
- 智能清潔電器的遠程監(jiān)控技術(shù)考核試卷
- 機器人傳感器數(shù)據(jù)融合與應(yīng)用考核試卷
- 蘇州恒溫配送合同范本
- 土建及市政合同范本
- 拍攝視頻制作合同范本
- 毛坯公寓酒店合同范本
- 質(zhì)量管理軟件操作手冊
- 翰威特任職資格撰寫培訓材料
- 大家排好隊說課
- 鐵氧體永磁材料
- 湘教版初中數(shù)學教材目錄
- 金蝶云星辰初級考試題庫
- GM/T 0107-2021智能IC卡密鑰管理系統(tǒng)基本技術(shù)要求
- 部編版七年級下冊語文第一單元課件
- 2023年山東省青島市統(tǒng)招專升本管理學自考真題(含答案)
- 文化產(chǎn)業(yè)政策與法規(guī)課件
- 人教版八年級下冊生物全冊教案完整版教學設(shè)計含教學反思
評論
0/150
提交評論