靜態游標和ref游標,靜態游標分為:顯示游標/隱式游標
顯示游標使用步驟:宣告游標,開啟,讀取,關閉
declare cursor cursor_name
open cursor_name
fetch cursor_name into record_name
close cursor_name
declare
cursor my_test is select * from sf_operatorlog;
row_record sf_operatorlog%rowtype; (宣告型別,或者varchar(20),oid%type)
begin
open my_test;
fetch my_test into row_record;
dbms_output.put_line(row_record.oid||'%$%'||row_record.tablename);
close my_test;
end;
對於fetch要執行多條語句操作時,新增loop/end loop;
declare
cursor my_test is select name,type from user_source;
row_oid user_source.name%type;
row_tablename user_source.type%type;
begin
open my_test;
loop
fetch my_test into row_oid,row_tablename;
exit when my_test%notfound;
dbms_output.put_line(row_oid||'%$%'||row_tablename);
end loop;
close my_test;
end;
使用fetch...into...是單條資料提取,
使用fetch...bulk collect into + for進行批量提取
declare
cursor my_test is select * from user_source;
type tab is table of user_source%rowtype;
row_record tab;
begin
open my_test;
loop
fetch my_test bulk collect into row_record ;
for i in 1..row_record.count
loop
dbms_output.put_line(row_record(i).type||'---'||row_record(i).name);
end loop;
exit when my_test%notfound;
end loop;
close my_test;
end;
或是用cursor for loop迭代
declare
cursor my_test is select name,type from user_source;
begin
for index1 in my_test
loop
dbms_output.put_line(index1.name||'---'||index1.type);
end loop;
end;
游標的屬性
%isopen(true/false) if my_test%isopen then else
%found(true/false) if my_test%found then else
%notfound(true)
%rowcount(int) 當前游標的行數
帶引數的游標 191/171
隱式游標sql 192/172
oracle 游標cursor詳解
一 概念 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...
oracle 游標操作,cursor
在游標中使用引數 cursor cursor name p state in state type is select statement 沒有引數的寫法是 cursor cursor name is select statement 對於括號裡面的,in 左邊是引數的別名,in 右邊是引數的型別,...
Oracle中Cursor 游標 學習
一 概念 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...