博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle存储过程-自定义数据类型,集合,遍历取值
阅读量:5138 次
发布时间:2019-06-13

本文共 1387 字,大约阅读时间需要 4 分钟。

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

目录[-]

0.前言   

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

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

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

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

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

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

1.Packages

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
2
1...luu
2...lii

转载于:https://www.cnblogs.com/Bouger/p/4318322.html

你可能感兴趣的文章
Java单例设计模式(实现Java的一个类只有一个对象)
查看>>
openstack 网卡
查看>>
SP2010开发和VS2010专家"食谱"--第六章节--Web Services和REST
查看>>
Java设计模式之适配器模式(Adapter)
查看>>
salt一键部署zookeeper
查看>>
HDU 2077 汉诺塔IV 递归 通项公式
查看>>
Java复习一
查看>>
ADO.NET概述
查看>>
Sharepoint 2010 视图过滤显示上周,本周或下一周的数据
查看>>
Linux下安装mysql(离线安装和在线安装)
查看>>
奋斗的小蜗牛
查看>>
调试程序
查看>>
UVa 816 - Abbott's Revenge
查看>>
关于代码重构的几点建议
查看>>
观察者模式
查看>>
软件安装
查看>>
用于应对复杂、难加工材料的埃马克电化学加工(ECM)技术(附图)
查看>>
eclipse在当前项目里面批量替换所有单词
查看>>
简单的浮动窗口
查看>>
Jmeter mysql testing遇到的问题
查看>>