游標的幾種寫法

2021-06-18 21:16:26 字數 2080 閱讀 3091

select empno,ename,job,sal  from emp

/*******

for 游標

*******/

declare

--定義游標

cursor c_man is

select * from emp where job = 'manager';

--定義游標的行(在for語句中,這個可以不用定義)

-- c_row c_man%rowtype;

begin

--迴圈游標查詢 行.欄位 (訪問)

for c_row in c_man loop

dbms_output.put_line(c_row.empno);

--exit when c_man % notfound = false;

end loop;

end;

/*******

for 游標 更新當前行

where ... update of 字段

update ...where ..for current 游標名

*******/

declare

cursor c_table is select * from emp where upper(job)='manager' for update of sal;

begin

for c_row in c_table loop

if c_row.empno=7566 then

update emp set sal=sal-0.1 where current of c_table;

end if;

end loop;

commit;

end;

/*******

for 游標 簡潔

*******/

begin

for c_table in(select * from emp) loop

if c_table.empno=7566 then

dbms_output.put_line(c_table.sal);

end if;

end loop;

end;

/*******

fetch 游標 讀取行

*******/

declare

cursor c_table is

select * from emp where upper(job)='manager';

c_row c_table%rowtype;

begin

--開啟游標

open c_table;

--迴圈體

loop

--讀取一行

fetch c_table into c_row;

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

--退出條件

exit when c_table%notfound;

end loop;

--關閉游標

close c_table;

end;

/*******

fetch 游標 讀取列

*******/

declare

v_job emp.job%type;

v_sal emp.sal%type;

cursor c_table is select job,sal from emp where empno in(7369,7499) ;

begin

open c_table;

loop

fetch c_table into v_job,v_sal;

exit when c_table%notfound;

dbms_output.put_line(v_job||to_char(v_sal));

end loop;

close c_table;

--commit;

end;

動態游標的寫法

在變數宣告部分定義的游標是靜態的,不能在程式執行過程中修改。雖然可以通過引數傳遞來取得不同的資料,但還是有很大的侷限性。通過採用動態游標,可以在程式執行階段隨時生成乙個查詢語句作為游標。要使用動態游標需要先定義乙個游標型別,然後宣告乙個游標變數,游標對應的查詢語句可以在程式的執行過程中動態地說明。定...

sql語句游標的寫法

當迴圈查詢一張表的資訊時,我們得寫一張游標來對每條資訊進行操作,具體格式如下 declare fitemid int declare point cursor cursor forselect fitemid from icstockbillentry where finterid 1314 每條資...

Cursor游標(游標)的使用

為了處理sql語句,oracle 將在記憶體中分配乙個區域,這就是上下文區。這個區包含了已經處理完的行數 指向被分析語句的指標,整個區是查詢語句返回的資料行集。游標就是指向上下文區控制代碼或指標。兩種游標 一 顯示游標 需要明確定義!顯示游標被用於處理返回多行資料的select 語句,游標名通過cu...