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...luu2...lii