隱式游標和顯式游標

隱式游標和顯式游標

ID:39323135

大?。?8.22 KB

頁數(shù):19頁

時間:2019-06-30

隱式游標和顯式游標_第1頁
隱式游標和顯式游標_第2頁
隱式游標和顯式游標_第3頁
隱式游標和顯式游標_第4頁
隱式游標和顯式游標_第5頁
資源描述:

《隱式游標和顯式游標》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、oracle隱式游標,顯示游標,游標循環(huán),動態(tài)SELECT語句和動態(tài)游標,異常處理,自定義異常,關鍵字:oracle隱式游標顯示循環(huán)動態(tài)select語句游標異常處理自定義游標的概念:????游標是SQL的一個內存工作區(qū),由系統(tǒng)或用戶以變量的形式定義。游標的作用就是用于臨時存儲從數(shù)據(jù)庫中提取的數(shù)據(jù)塊。在某些情況下,需要把數(shù)據(jù)從存放在磁盤的表中調到計算機內存中進行處理,最后將處理結果顯示出來或最終寫回數(shù)據(jù)庫。這樣數(shù)據(jù)處理的速度才會提高,否則頻繁的磁盤數(shù)據(jù)交換會降低效率。?游標有兩種類型:顯式游標和隱式游標。在前述程序中用到的SELECT...

2、INTO...查詢語句,一次只能從數(shù)據(jù)庫中提取一行數(shù)據(jù),對于這種形式的查詢和DML操作,系統(tǒng)都會使用一個隱式游標。但是如果要提取多行數(shù)據(jù),就要由程序員定義一個顯式游標,并通過與游標有關的語句進行處理。顯式游標對應一個返回結果為多行多列的SELECT語句。?游標一旦打開,數(shù)據(jù)就從數(shù)據(jù)庫中傳送到游標變量中,然后應用程序再從游標變量中分解出需要的數(shù)據(jù),并進行處理。?隱式游標?如前所述,DML操作和單行SELECT語句會使用隱式游標,它們是:?*插入操作:INSERT。?*更新操作:UPDATE。?*刪除操作:DELETE。?*單行查詢操作:SE

3、LECT...INTO...。?當系統(tǒng)使用一個隱式游標時,可以通過隱式游標的屬性來了解操作的狀態(tài)和結果,進而控制程序的流程。隱式游標可以使用名字SQL來訪問,但要注意,通過SQL游標名總是只能訪問前一個DML操作或單行SELECT操作的游標屬性。所以通常在剛剛執(zhí)行完操作之后,立即使用SQL游標名來訪問屬性。游標的屬性有四種,如下所示。?Sql代碼?1.隱式游標的屬性?返回值類型???意????義??2.SQL%ROWCOUNT????整型??代表DML語句成功執(zhí)行的數(shù)據(jù)行數(shù)??3.SQL%FOUND???布爾型?值為TRUE代表插入、刪除

4、、更新或單行查詢操作成功??4.SQL%NOTFOUND????布爾型?與SQL%FOUND屬性返回值相反??5.SQL%ISOPEN??布爾型?DML執(zhí)行過程中為真,結束后為假??【訓練1】 使用隱式游標的屬性,判斷對雇員工資的修改是否成功。?步驟1:輸入和運行以下程序:?Sql代碼?1.SET?SERVEROUTPUT?ON???2.????????BEGIN??3.????????UPDATE?emp?SET?sal=sal+100?WHERE?empno=1234;??4.?????????IF?SQL%FOUND?THEN???

5、5.????????DBMS_OUTPUT.PUT_LINE('成功修改雇員工資!');??6.????????COMMIT;???7.????????ELSE??8.????????DBMS_OUTPUT.PUT_LINE('修改雇員工資失??!');??9.?????????END?IF;???1.????????END;??運行結果為:?Sql代碼?1.修改雇員工資失??!??2.????????PL/SQL?過程已成功完成。??步驟2:將雇員編號1234改為7788,重新執(zhí)行以上程序:?運行結果為:?Sql代碼?1.成功修改雇員工資!

6、??2.????????PL/SQL?過程已成功完成。??說明:本例中,通過SQL%FOUND屬性判斷修改是否成功,并給出相應信息。?顯式游標?游標的定義和操作?游標的使用分成以下4個步驟。?1.聲明游標?在DECLEAR部分按以下格式聲明游標:?CURSOR游標名[(參數(shù)1數(shù)據(jù)類型[,參數(shù)2數(shù)據(jù)類型...])]?ISSELECT語句;?參數(shù)是可選部分,所定義的參數(shù)可以出現(xiàn)在SELECT語句的WHERE子句中。如果定義了參數(shù),則必須在打開游標時傳遞相應的實際參數(shù)。?SELECT語句是對表或視圖的查詢語句,甚至也可以是聯(lián)合查詢??梢詭HE

7、RE條件、ORDERBY或GROUPBY等子句,但不能使用INTO子句。在SELECT語句中可以使用在定義游標之前定義的變量。?2.打開游標?在可執(zhí)行部分,按以下格式打開游標:?OPEN游標名[(實際參數(shù)1[,實際參數(shù)2...])];?打開游標時,SELECT語句的查詢結果就被傳送到了游標工作區(qū)。?3.提取數(shù)據(jù)?在可執(zhí)行部分,按以下格式將游標工作區(qū)中的數(shù)據(jù)取到變量中。提取操作必須在打開游標之后進行。?FETCH游標名INTO變量名1[,變量名2...];?或?FETCH游標名INTO記錄變量;?游標打開后有一個指針指向數(shù)據(jù)區(qū),F(xiàn)ETCH語

8、句一次返回指針所指的一行數(shù)據(jù),要返回多行需重復執(zhí)行,可以使用循環(huán)語句來實現(xiàn)。控制循環(huán)可以通過判斷游標的屬性來進行。?下面對這兩種格式進行說明:?第一種格式中的變量名是用來從游標中接收數(shù)據(jù)的變量

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。