declare
--定义一个自定义类型
type aaa is record (
a_field varchar2(10),
b_field varchar2(10)
)
--定义一个存放自定义类型的集合(默认下标 index 为 number)
type aaa_array is table of aaa;
begin
--插入自定义类型数据
index := nvl(aaa_array.last,0)+1;
aaa_array(index).a_field := 'a_value';
aaa_array(index).b_field := 'b_value';
--遍历自定义类型集合aaa_array
for i in aaa_array.first .. aaa_array.last
loop
dbms_output.put_line(aaa_array(i).a_field;
end loop;
end;
/
--定义一个自插入数组并遍历 (5000 为数组长度)
declare
TYPE varray_type IS VARRAY(5000) OF varchar2(10);
v1 varray_type;
begin
v1 := varray_type('740151715',
'736045418',
'737086339',
'738277723');
for i in v1.first..v1.last loop
dbms_output.put_line(v1(i));
end loop;
end;
/
--定义一个index 为 varchar2 的map 类型并遍历(2000 为数组长度)
declare
TYPE map_type IS TABLE OF varchar2(2000) INDEX BY varchar2(50);
v_map_set map_type;
key varchar2(50) := null;
begin
--插入key-->value
map_set(v_distinct) :=v_deal_name||',null, '||v_master_service_type||','||j.category_code;
--遍历map
key:=v_map_set.first;
loop
dbms_output.put_line(v_map_set(key));
key:=v_map_set.next(key);
exit when key is null;
end loop;
end;
/
--循环一个query
for letter_rec in (
select * from ord_letter_master where status =1
)
loop
dbms_output.put_line(letter_rec.ord_letter_code);
end loop;
--循环一个syscursor
declare
--定义Oracle 游标
rec_master_cur SYS_REFCURSOR:=null;
--用于装载对应数据的游标row
rec_master brx_ord_factor_master%rowtype:=null;
begin
--打开游标
open rec_master_cur for
SELECT *
from brx_ord_factor_master bofm
where bofm.order_channel = 'RET'
and bofm.status = 'A'
and bofm.pps = in_pps;
--遍历游标
loop
fetch rec_master_cur into rec_master;
exit when rec_master_cur%NOTFOUND;
dbms_output.put_line(rec_master.ord_master_code);
end loop;
end;
/
oracle 中TYPE 关键字 IS RECORD 和 IS TABLE OF 关键字的使用(循环)
最新推荐文章于 2023-10-10 19:59:03 发布