Oracle動態遊標
Oracle動態遊標
(一)強型別動態遊標
1 定義
強型別動態遊標是指,在遊標使用之前,雖未指定遊標的查詢定義,但是遊標的型別已經確定。
2 語法
type 遊標型別 is ref cursor return 記錄型別
3 應用場景、
使用者想在表dept中檢視Beijing這一城市的具體資訊。如果表中沒有Beijing的記錄資訊,則使用者希望能夠檢視所有城市的資訊。
程式:
begin
declare
type ref_deptrow is ref cursor return dept%rowtype; /*強型別動態遊標宣告*/
c_count number;
deptrow dept%rowtype;
cur_deptrow ref_deptrow;
begin
select count(*) into c_count from dept where loc = 'Beijing';
if c_count = 0 then
open cur_deptrow for select * from dept;
else
open cur_deptrow for select * from dept where loc = 'Beijing';
end if;
fetch cur_deptrow into deptrow;
while cur_deptrow%found loop
dbms_output.put_line(deptrow.deptno || ':' || deptrow.dname || ':' || deptrow.loc);
fetch cur_deptrow into deptrow;
end loop;
end;
end;
/
執行結果:
10:ACCOUNTING:NEW YORK
20:RESEARCH:DALLAS
30:SALES:CHICAGO
40:OPERATIONS:BOSTON
PL/SQL procedure successfully completed.
(三)弱型別動態遊標
1 定義
弱型別動態遊標指的是在遊標使用之前,遊標的型別無法具體確定,要等到程式執行時,才能確定遊標的型別。與強型別動態遊標相比,弱型別動態遊標沒有返回型別。
2 語法
type 遊標型別 is ref cursor
3 應用場景
使用者想要在表emp查詢deptno為40的部門資訊,若查不到則想在表dept中繼續查詢。
程式:
begin
declare
type ref_tablerow is ref cursor;
c_count number;
emprow emp%rowtype;
deptrow dept%rowtype;
cur_tablerow ref_tablerow;
begin
select count(*) into c_count from emp where deptno = 40;
if c_count = 0 then
open cur_tablerow for select * from dept where deptno = 40;
fetch cur_tablerow into deptrow;
while cur_tablerow%found loop
dbms_output.put_line(deptrow.deptno || ':' ||
deptrow.dname || ':' ||
deptrow.loc);
fetch cur_tablerow into deptrow;
end loop;
else
open cur_tablerow for select * from emp where deptno = 40;
fetch cur_tablerow into emprow;
while cur_tablerow%found loop
dbms_output.put_line(emprow.deptno || ':' ||
emprow.empno || ':' ||
emprow.ename);
fetch cur_tablerow into deptrow;
end loop;
end if;
end;
end;
/
執行結果:
40:OPERATIONS:BOSTON
PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1248672/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle動態語句中返回遊標Oracle
- oracle 遊標中使用 動態 sqlOracleSQL
- Oracle 動態遊標的使用Oracle
- ORACLE中帶引數、REF遊標及動態SQL例項OracleSQL
- Oracle遊標Oracle
- Oracle 遊標Oracle
- Oracle遊標示例Oracle
- Oracle遊標大全Oracle
- 簡單測試動態遊標(REF CURSOR)的使用
- Oracle遊標共享,父遊標和子游標的概念Oracle
- oracle cursor遊標迴圈比較遊標元素是否相同Oracle
- oracle遊標使用全解Oracle
- Oracle 遊標使用全解Oracle
- [轉]oracle 遊標使用大全Oracle
- Oracle 遊標使用大全(轉)Oracle
- Oracle遊標使用大全(轉)Oracle
- 動態遊標的操作~~~
- Oracle遊標共享(Cursor Sharing)--常規遊標共享和自適應遊標共享(ACS)Oracle
- Oracle開發基礎-遊標Oracle
- Oracle自適應共享遊標Oracle
- Oracle使用cursor for隱式遊標Oracle
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- Oracle - 共享遊標、父子游標、硬軟解析Oracle
- Oracle 11.1 自適應遊標Oracle
- 【CURSOR】Oracle 遊標 (cursor)知識梳理Oracle
- oracle遊標簡單使用小記Oracle
- Oracle 觸發器中使用遊標Oracle觸發器
- Oracle Package返回遊標 和 java呼叫OraclePackageJava
- oracle cursor遊標獲取首末元素Oracle
- Oracle資料庫遊標使用大全Oracle資料庫
- oracle遊標批次處理資料Oracle
- Oracle 基礎溫習7 之 遊標Oracle
- oracle遊標使用的方方面面Oracle
- Oracle資料庫遊標使用大全(轉)Oracle資料庫
- 實現Oracle非1521標準埠動態註冊Oracle
- Oracle遊標遍歷%rowtype中的記錄Oracle
- Oracle遊標開啟時遇到併發更新Oracle
- Oracle學習筆記整理之遊標篇Oracle筆記