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

    1.设置文字的格式:<font face=""></font>  字号<font size=""> 颜色<font c ...

  2. iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案—scrollIntoView()

    问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验. 问题重现 原始页面:页面中有header.main.f ...

  3. Android-Activity使用(2) -传值

    一.简单传值 1.修改MainActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns ...

  4. JSP和Server的相互转化

    [设计想法] [前置条件] 1. eclipse的web环境已经搭建OK 2. eclipse已经存在web项目"firstweb" [操作步骤] 1. "firstwe ...

  5. Spring单实例、多线程安全、事务解析

    原文:http://blog.csdn.net/c289054531/article/details/9196053 引言:     在使用Spring时,很多人可能对Spring中为什么DAO和Se ...

  6. .Net分布式架构(一):Nginx实现负载均衡

    一:负载均衡简介 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务. ...

  7. jsp请求乱码问题

    首先尝试添加filter,以下是我的自定义filter,实现了Filter接口: package com.deplume.ssm.filter;import javax.servlet.*;impor ...

  8. 关于linux中执行脚本或程序时指定的路径

    假设/mnt/bin 目录下存在一个名为 hello.sh 的可执行文件. 1. 若当前目录是 /mnt/bin ,可以使用 ./hello.sh 来执行这个可执行文件,但是使用 hello.sh 就 ...

  9. C++ 学习笔记(2) —— float 和 double 的精度

    Size Range Precision 4 bytes ±1.18 x 10-38 to ±3.4 x 1038 6-9 significant digits, typically 7 8 byte ...

  10. this的面面观

    http://www.cnblogs.com/Wayou/p/all-this.html <JavaScript语言精粹> 全局this 浏览器宿主的全局环境中, function f(x ...