六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

PL/SQL用光標查詢多條記錄

[摘要]PL/SQL光標為程序提供了從數據庫中選擇多行數據,然后對每行數據單獨進行處理的方法,它為Oracle提供了一種指示和控制SQL處理的各個階段的方法。我將認為您已經對PL/SQL有一定的了解。通過本文,您將學會:光標的創建 光標的處理 定義和使用光標屬性 一、 什么是光標Oracle使用兩種光標:...
PL/SQL光標為程序提供了從數據庫中選擇多行數據,然后對每行數據單獨進行處理的方法,它為Oracle提供了一種指示和控制SQL處理的各個階段的方法。我將認為您已經對PL/SQL有一定的了解。通過本文,您將學會:

光標的創建
光標的處理
定義和使用光標屬性
一、 什么是光標
Oracle使用兩種光標:顯式光標和隱式光標。不管語句返回多少條紀錄,PL/SQL為使用的每一條UPDATE、DELETE和INSERT等SQL命令隱式的聲明一個光標。(要管理SQL語句的處理,必須隱式的給它定義一個光標。)用戶聲明并使用顯示光標處理SELECT語句返回的多條記錄。顯示的定義光標一種結構,它使用戶能夠為特定的語句指定內存區域,以便以后使用。

二、 光標的作用
當PL/SQL光標查詢返回多行數據時,這些記錄組被稱為活動集。Oracle將這種活動集存儲在您創建的顯示定義的已命名的光標中。Oracle光標是一種用于輕松的處理多行數據的機制,沒有光標,Oracle開發人員必須單獨地、顯式地取回并管理光標查詢選擇的每一條記錄。
光標的另一項功能事,它包含一個跟蹤當前訪問的記錄的指針,這使您的程序能夠一次處理多條記錄。

三、 使用顯示光標的基本方法
步驟如下:

聲明光標
打開光標
從光標中取回數據
關閉光標
1、聲明光標
聲明光標的語法如下:
DECLARE cursor_name
Is
SELECT statement

其中,cursor_name是您給光標指定的名稱;SELECT statement是給光標活動集返回記錄的查詢。
聲明光標完成了下面兩個目的:
給光標命名;
將一個查詢與光標關聯起來。
值得注意的是,必須在PL/SQL塊的聲明部分聲明光標;給光標指定的名稱是一個未聲明的標識符,而不是一個PL/SQL變量,不能給光標名稱賦值,也不能將它用在表達式中。PL/SQL塊使用這個名稱來引用光標查詢。
例:DECLARE
CURSOR c1
Is
SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM<=10;
另外還可以在光標定義語句中聲明光標的參數,例:
CURSOR c1(view _nbr number)
Is
SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM<= view _nbr;

光標參數只對相應的光標是可見的,不能在光標范圍之外引用該光標的參數。如果試圖這樣做,Oracle將返回一個錯誤,指出該變量沒有定義。
2、打開光標
打開光標的語法如下:
OPEN cursor_name;

其中cursor_name是您以前定義的光標名稱。
打開光標將激活查詢并識別活動集,可是在執行光標取回命令之前,并沒有真正取回記錄。OPEN命令還初始化了光標指針,使其指向活動集的第一條記錄。光標被打開后,直到關閉之前,取回到活動集的所有數據都是靜態的,換句話說,光標忽略所有在光標打開之后,對數據執行的SQL DML命令(INSERT、UPDATE、DELETE和SELECT)。因此只有在需要時才打開它,要刷新活動集,只需關閉并重新打開光標即可。
3、從光標中取回數據
FETCH命令以每次一條記錄的方式取回活動集中的記錄。通常將FETCH命令和某種迭代處理結合起來使用,在迭代處理中,FETCH命令每執行一次,光標前進到活動集的下一條記錄。
FETCH命令的語法:
FETCH cursor_name INTO record_list;

其中,cursor_name是前面定義的光標的名稱;record_list是變量列表,它接受活動集中的列。FETCH命令將活動集的結果放置到這些變量中。
執行FETCH命令后,活動集中的結果被取回到PL/SQL變量中,以便在PL/SQL塊中使用。每取回一條記錄,光標的指針就移向活動集的下一條記錄。
例:
FETCH C1 INTO VNAME;
WHILE C1%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT) ' ' VNAME);
END LOOP;
其中,使用屬性'%FOUND'使得當FETCH到達活動集的結尾時,不會引發異常。其它屬性及含義見下表:
屬性 含量
%FOUND 布爾型屬性,當最近一次該記錄時成功返回,則值為TRUE
%NOTFOUND 布爾型屬性,它的值總與%FOUND屬性的值相反
%ISOPEN 布爾型屬性,當光標是打開時返回TRUE
%ROWCOUNT 數字型屬性,返回已從光標中讀取的記錄數


屬性 含量
%FOUND 布爾型屬性,當最近一次該記錄時成功返回,則值為TRUE
%NOTFOUND 布爾型屬性,它的值總與%FOUND屬性的值相反
%ISOPEN 布爾型屬性,當光標是打開時返回TRUE
%ROWCOUNT 數字型屬性,返回已從光標中讀取的記錄數

4、關閉光標
CLOSE語句關閉以前打開的光標,使得活動集不確定。當用戶的程序或會話結束時,Oracle隱式關閉光標。光標被關閉后,就不能對它執行任何操作了,否則將引發異常。
CLOSE語句的語法是:
CLOSE cursor_name;
其中,cursor_name是以前打開的光標的名稱。
完整的程序代碼如下:
DECLARE
CURSOR C1 IS SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM<=10
ORDER BY VIEW_NAME;
VNAME VARCHAR2(40);
BEGIN
OPEN C1;
FETCH C1 INTO VNAME;
WHILE C1%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT) '' VNAME);
END LOOP;
END;
……CLOSE C1;


四、 小結
光標是一種結構,能夠以一次一條記錄的方式處理多行查詢的結果.為每條DML語句創建隱式光標,而顯式光標是由用戶創建的,以便處理返回多條記錄的查詢。而且,通過消除反復地分析代碼,光標提高了代碼的處理速度。


主站蜘蛛池模板: 日韩欧美区 | 色视频线观看在线播放 | 青青草黄 | 最新狠狠色狠狠色综合 | 伊人久久中文字幕久久cm | 午夜久久久久久久 | 日本高清色本在线www游戏 | 伊人婷婷色 | 亚洲午夜综合网 | 午夜在线观看免费视频 | 婷婷久月 | 四虎精品永久免费 | 天天色天天干天天 | 天天搞天天干 | 日本色资源 | 天天综合天天看夜夜添狠狠玩 | 婷婷在线五月 | 午夜涩涩| 天堂网www在线观看 天堂网www在线 | 欲色天天 | 色天使在线视频 | 淫片a武则天 | 五月婷婷视频在线观看 | 日韩精品影院 | 中文字幕无码中文字幕有码 | 日本高清在线观看视频你懂的 | 一级做性色a爰片久久毛片 一级做受视频免费是看美女 | 日本激情网站 | 亚洲精品影院 | 亚洲一区二区三区免费视频 | 欧美一级做一级爱a做片性 欧美一级做一a做片性视频 | 日韩美女一区 | 在线视频 二区 | 啪啪网站色大全免费 | 五月婷婷综合在线视频 | 性久久久久久 | 午夜一区二区三区 | 最新69国产成人精品视频69 | 野外三级国产在线观看 | 中国日韩欧美中文日韩欧美色 | 天天狠天天透天干天天怕处 |