-- 宣告游標;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...