oracle 中TYPE 关键字 IS RECORD 和 IS TABLE OF 关键字的使用(循环)

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;
/
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值