--使用游標
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 資料通用技術...