oracle中的游標

2022-07-30 03:15:19 字數 2750 閱讀 3075

-- 宣告游標;cursor cursor_name is select_statement

--for 迴圈游標

--(1)定義游標

--(2)定義游標變數

--(3)使用for迴圈來使用這個游標

declare

--型別定義

cursor c_job

isselect empno,ename,job,sal

from emp

where job='manager';

--定義乙個游標變數v_cinfo c_emp%rowtype ,該型別為游標c_emp中的一行資料型別

c_row c_job%rowtype;

begin

for c_row in c_job loop

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

end loop;

end;

dbms_output.put_line(sql%rowcount);

exception

when no_data_found then

dbms_output.put_line('sorry no data');

when too_many_rows then

dbms_output.put_line('too many rows');

end;

declare

empnumber emp.empno%type;

empname emp.ename%type;

begin

if sql%isopen then

dbms_output.put_line('cursor is opinging');

else

dbms_output.put_line('cursor is close');

end if;

if sql%notfound then

dbms_output.put_line('no value');

else

dbms_output.put_line(empnumber);

end if;

dbms_output.put_line(sql%rowcount);

dbms_output.put_line('-------------');

select empno,ename into empnumber,empname from emp where empno=7499;

dbms_output.put_line(sql%rowcount);

if sql%isopen then

dbms_output.put_line('cursor is opinging');

else

dbms_output.put_line('cursor is closing');

end if;

if sql%notfound then

dbms_output.put_line('no value');

else

dbms_output.put_line(empnumber);

end if;

exception

when no_data_found then

dbms_output.put_line('no value');

when too_many_rows then

dbms_output.put_line('too many rows');

end;

--2,使用游標和loop迴圈來顯示所有部門的名稱

--游標宣告

declare

cursor csr_dept

is--select語句

select dname

from depth;

--指定行指標,這句話應該是指定和csr_dept行型別相同的變數

row_dept csr_dept%rowtype;

begin

--for迴圈

for row_dept in csr_dept loop

dbms_output.put_line('部門名稱:'||row_dept.dname);

end loop;

end;

--3,使用游標和while迴圈來顯示所有部門的的地理位置(用%found屬性)

declare

--游標宣告

cursor csr_testwhile

is--select語句

select loc

from depth;

--指定行指標

row_loc csr_testwhile%rowtype;

begin

--開啟游標

open csr_testwhile;

--給第一行喂資料

fetch csr_testwhile into row_loc;

--測試是否有資料,並執行迴圈

while csr_testwhile%found loop

dbms_output.put_line('部門地點:'||row_loc.loc);

--給下一行喂資料

fetch csr_testwhile into row_loc;

end loop;

close csr_testwhile;

end;

select * from emp

Oracle中的游標

cursor found最近一次讀取是否成功 notfound isopen游標開啟時返回true rowcount返回已從游標讀取的記錄數 輸出年齡大於等於18的使用者的id跟name declare v id t.id type v name t.name type cursor c user ...

Oracle中的游標

oracle 中的游標 游標 cursor 在pl sql 中可以增強 sql語句的功能,游標是用來查詢資料 獲取結果集中記錄的指標。它可以讓開發者在結果集中訪問結果集中的一行。游標以程式設計的方式訪問資料,從而完成在結果集的每個記錄上的操作。也就是說,游標就是結果集中的記錄指標,該指標指向查詢結果...

Oracle中的游標

游標 用來處理使用select語句從資料庫中檢索到的多行記錄的工具。1 游標的分類 1 顯示游標 返回多條記錄時,使用顯示游標逐行讀取 2 隱式游標 pl sql自動為dml語句建立隱式游標,包含一條返回記錄 2 顯示游標 1 顯示游標的使用步驟 宣告游標 cursor cursor name pa...