摘要 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. Android百分比布局支持库介绍——com.android.support:percent(转)

    转载自http://www.apkbus.com/forum.php?mod=viewthread&tid=244752&extra=&_dsign=0b699c42 在此之前 ...

  2. Extjs 中column的renderer使用方法

    renderer: function(value, cellmeta, record, rowIndex, columnIndex, store) { if (record.get('productT ...

  3. (地址)propedit安装说明的地址

    proedit http://propedit.sourceforge.jp/eclipse/updates/

  4. PRML读书笔记——2 Probability Distributions

    2.1. Binary Variables 1. Bernoulli distribution, p(x = 1|µ) = µ 2.Binomial distribution + 3.beta dis ...

  5. Latex常用指令学习

    1:\begin{}与\end{}的用法 2:\textcolor{red}{\fangsong\zihao{2}汉字:} 3:\newpage  新的一页 4:\heiti\zihao{4}\bf{ ...

  6. 原生js快速渲染dom节点

    function renderDom(str){ var _div = document.createElement('div'); _div.innerHTML = str; var dom_tem ...

  7. ASCII编码表

    最初的编码:ASCII 补充: ASCII表是适用于美国的,共128位:ISO-8859-1是适用于欧洲的,共256位 :GB2312是适用于中文系统的:UTF-8是万国码,适用于绝大部分语言:ANS ...

  8. 配置DNS服务器

    一.配置基本的DNS 服务器(包含正向解析和反向解析)域名:abc.com服务器IP:10.1.2.11 1. 编辑主配置文件/etc/named.conf---------------------- ...

  9. UBIFS 文件系统分析1 - 磁盘结构【转】

    转自:http://blog.csdn.net/kickxxx/article/details/7109662 版权声明:本文为博主原创文章,未经博主允许不得转载. ubifs磁盘结构 UBIFS文件 ...

  10. Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥

    Visual Studio 2015是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.所写的目标代码适用于微软支持的所有 ...