摘要 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

Oracle存储过程-自定义数据类型,集合,遍历取值的更多相关文章

  1. js动态添加-表格逐行添加、删除、遍历取值

    关于js对表格进行逐行添加,今天抽空整理了一下:新建一个html文件(没有编辑器的可以新建一个demo.txt文件,然后改后缀名为demo.html),把下面代码全部贴进去即可.功能包括:表格添加一行 ...

  2. jQuery循环遍历取值

    1:循环遍历取值 var arr = new Array(); $(".plus-tag a span").each(function(i) { arr[i] = $(this). ...

  3. Map 遍历取值及jstl的取值

    Map 遍历取值及jstl的取值 学习了:http://blog.csdn.net/yanjiaye520/article/details/17354239 1.Java map的便利取值 Java代 ...

  4. Java数据类型及对应取值范围

    Java数据类型及对应取值范围 在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型).基本数据类型不是对象,不能调用toString().hashCode().getCl ...

  5. .net 存储过程中的 output参数取值问题

    当存储过程中多个结果需要返回时经常需要用到output类型的参数,如果存储过程没有返回结果集只是输出output类型参数时使用如下代码: db.AddOutParameter(dbCmd, " ...

  6. freemarker 前端 判读 遍历 取值

    <#if content?length gt 100> ${content[0..100]}... <#else> ${content} </#if> freema ...

  7. Entry键值对对象和Map集合遍历键值对方式

    我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在IMap 中是一一对应关系, 这一对对象又称做Map 中的一个Entry(项).Entry将键值对的对应 ...

  8. oracle常用自定义函数集合

    1.Oracle 判断值是否为数字的函数CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBERIS  STR VARCHAR ...

  9. XML文件标签名一致,而属性值不同,如何遍历取值写法 摘录

    <EssentialFunctions>      <Qualification description="We Offer" source="AdDe ...

随机推荐

  1. 关于IOS的证书、App ID、设备、Provisioning Profile详述

    首先,打开developer.apple.com ,在iOS Dev Center打开Certificates, Indentifiers & Profiles认识一下基本结构.列表就包含了开 ...

  2. 解决Tomcat无法shutdown进程

    转自:http://my.oschina.net/yongyi/blog/405198 问题分析 这个在windows下没有碰到过,因为此前跑Tomcat都是以服务而不是命令脚本的形式跑的,而且已经换 ...

  3. JS,分页

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  4. iOS UITableView 移除单元格选中时的高亮状态

    在处理UITableView表格时,我们希望用户能够和触摸单元格式进行交互,但是希望用户在完成交互之后,这些单元格的选中状态能够消失,.Cocoa Touch 提供了两种方法来防止单元格背持久选中. ...

  5. 简要介绍Apache、php、mysql安装和工具介绍

    1 安装Apache 网站:www.Apache.org下载相应的Apache,目前下载了近期的:httpd-2.2.15-win32-x86-openssl-0.9.8msi 安装简要步骤如下图: ...

  6. csuoj 1505: 酷酷的单词

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1505 1505: 酷酷的单词 时间限制: 1 Sec  内存限制: 128 MB 提交: 340  ...

  7. bzoj1029 [JSOI2007]建筑抢修

    贪心,按截止时间排序,然后按截止时间从小到大枚举维修的建筑,如果之前修理建筑的总时间+当前修理时间<=截止时间,那么答案+1,否则如果之前修理过的建筑中最大的修理时间>当前建筑修理时间,那 ...

  8. jacob 多个web项目报错 jacob-1.14.3-x64.dll already loaded in another classloader jacob

    多个web项目报错 jacob-1.14.3-x64.dll already loaded in another classloader jacob 这个问题困扰了很久,网上很多解决方案,很多都不成功 ...

  9. Using Yum Variables

    You can use and reference the following built-in variables in yum commands and in all Yum configurat ...

  10. Together