Oracle 10g資料庫游標的使用學習一

2021-06-26 16:18:10 字數 4155 閱讀 8330

--使用游標

1)9i以前的使用方法,一次取一條資料

--1、顯示游標

declare

--定義游標

cursor temp_cursor is

select t.name,t.english_name from communitytype t;

--where t.community_type_id = 'ebook';

--定義變數

v_name communitytype.name%type;

v_english_name communitytype.english_name%type;

begin

--開啟游標

open temp_cursor;

--迴圈取資料

loop

--使用fetch into語句取資料,每次只能取一行資料

fetch temp_cursor into v_name,v_english_name;

--當游標找不到資料時,退出

exit when temp_cursor%notfound;

dbms_output.put_line(v_name||':'||v_english_name);

end loop;

--關閉游標

close temp_cursor;

end;

用for迴圈訪問游標中的記錄時,可以不顯示的開啟或關閉游標,for迴圈回自動的執行這些操作

--用for迴圈訪問游標中的記錄時,可以不顯示的開啟或關閉游標,for迴圈回自動的執行這些操作

declare

--定義游標

cursor temp_cursor is

select t.name,t.english_name from communitytype t;

begin

--迴圈取資料

for v_comtype in temp_cursor loop

dbms_output.put_line(v_comtype.name||','||v_comtype.english_name);

end loop;

end;

2)採用集合一次取所有資料

--使用游標

--1、顯示游標

declare

--定義游標

cursor temp_cursor is

select t.name from communitytype t;

--定義巢狀表變數

type name_table_type is table of communitytype.name%type;

name_table name_table_type;

begin

--開啟游標

open temp_cursor;

--使用bulk collect into語句取出全部資料

fetch temp_cursor bulk collect into name_table;

for i in 1..name_table.count loop

dbms_output.put_line(name_table(i));

end loop;

--關閉游標

close temp_cursor;

end;

3)利用集合變數一次取部分資料

--1、顯示游標

declare

--定義游標

cursor temp_cursor is

select t.name from communitytype t;

--定義變長陣列變數

type name_array_type is varray(5) of communitytype.name%type;

name_array name_array_type;

begin

--開啟游標

open temp_cursor;

--迴圈取資料

loop

--使用fetch into語句提取部分資料,每次取5個

fetch temp_cursor bulk collect into name_array limit 5;

dbms_output.put_line('資源庫名稱:');

for i in 1..name_array.count loop

dbms_output.put_line(name_array(i));

end loop;

dbms_output.new_line;

--當游標找不到資料時,退出

exit when temp_cursor%notfound;

end loop;

--關閉游標

close temp_cursor;

end;

4)、使用游標屬性 isopen rowcount

--4、使用游標屬性 isopen rowcount

declare

--定義游標

cursor temp_cursor is

select t.name from communitytype t;

--定義變數

type name_table_type is table of communitytype.name%type;

name_table name_table_type;

begin

--開啟游標

if not temp_cursor%isopen

then open temp_cursor;

end if;

--取資料

--使用fetch into語句提取部分資料,每次取5個

fetch temp_cursor bulk collect into name_table;

dbms_output.put_line('查詢總行數:'||temp_cursor%rowcount);

--關閉游標

close temp_cursor;

end;

5)、基於游標定義記錄變數

--5、基於游標定義記錄變數

declare

cursor emp_cursor is

select ct.community_type_id,ct.name

from communitytype ct

where community_type_id = 'ebook';

--定義基於游標的記錄變數

emp_record emp_cursor%rowtype;

begin

open emp_cursor;

loop

fetch emp_cursor into emp_record;

exit when emp_cursor%notfound;

end loop;

dbms_output.put_line(emp_record.name);

close emp_cursor;

end;

6)使用有引數的游標

--使用有引數的游標,即指定游標從結果集中去取community_type_id為游標引數的記錄

declare

cursor emp_cursor(id communitytype.community_type_id%type) is

select name from communitytype

where community_type_id = id;

v_name communitytype.name%type;

begin

open emp_cursor('ebook');

loop

fetch emp_cursor into v_name;

exit when emp_cursor%notfound;

dbms_output.put_line(v_name);

end loop;

close emp_cursor;

end;

Oracle 10g資料庫游標的使用學習三(實踐)

需求說明 s132877699668612為服務模板id,每乙個服務模板下面有多條服務模板配置資料,如下 config cpf bm tp service cfg data s132877699668612 common 1 config cpf bm tp service cfg data s13...

Oracle 10g資料庫游標的使用學習三(實踐)

b 需求說明 b s132877699668612為服務模板id,每乙個服務模板下面有多條服務模板配置資料,如下 config cpf bm tp service cfg data s132877699668612 common 1 config cpf bm tp service cfg data...

Oracle 10g資料庫管理

oracle 10g資料庫管理 課程介紹 本課程面向企業 oracle 10g 資料庫管理的學員。通過 oracle 10g 資料庫管理課程的系統培訓,使學員能夠在較短的時間內掌握 oralcle10g 資料庫管理和維護的各種技術,從而掌握最新版 oracle 的新特性和 oracle 資料通用技術...