Oracle存储过程-自定义数据类型,集合,遍历取值

0.前言   

    在Oracle的存储过程中,可能会遇到数据处理,假如我们目前的功能在一个Packages中

    Packages封装了多个不同功能的Procedure,我们在一个Procedure里面进行统计

    在另外一个Procedure进行计算 这就需要一个存放结果集的地方    

    以前的解决方案是:建立了一个临时表,数据统计出来后,放入临时表中

    在另外一个Procedure中取出来数据,再进行计算 这样需要读写操作 浪费性能

    我们可以使用Oracle的自定义数据类型去创建集合,进行操作

1.Packages

create or replace package test_lu is

  -- Author  : LUJIANING
  -- Created : 2014-3-12 11:27:34
  -- Purpose : 
  
  -- Public type declarations
  procedure test1;
  
  procedure test2;
  
  procedure test3;

end test_lu;



2.Packages bodies

create or replace package body test_lu is
  ---创建一个自定义数据类型
  TYPE c_user IS RECORD
    (   id number,
        name varchar2(30)
    );  
  ---根据自定义数据类型创建一个集合
  TYPE c_user_array IS TABLE OF c_user INDEX BY BINARY_INTEGER;  
  ---集合对象
  user_array c_user_array;
  ---数据对象
  user c_user;
  ---计数器
  v_counter number;
       
  procedure test1 is
  begin 
    user.id:=1;
    user.name:='luu';
    user_array(user.id):=user;
    
    user.id:=2;
    user.name:='lii';
    user_array(user.id):=user;    
    
  end;
  
  procedure test2 is
  begin 
    for v_counter in 1..user_array.count loop
      DBMS_OUTPUT.put_line(user_array(v_counter).id||'...'||user_array(v_counter).name);
    end loop;        
  end;
  
  procedure test3 is
  begin
    test1;
    test2;
  end;
end test_lu;


3.输出结果

1...luu
2...lii



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值