Oracle管道函数示例
Oracle的管道函数需要定义下面的三样:
Record/Object Type:定义一个Record或Object类型的变量,这个变量用于表示返回结果集的一行数据,有点像C#中的DataRow类。
Table Type:定义一个集合类型,这个类型由Record/Object Type填充。这个类型也可以理解为一个Record/Object的数组。
Function:定义个返回类型为Table Type的函数。这个函数负责生成结果集。
上述三个数据库对象一般定义在一个包内,但是Object Type不能定义在包内,需要在包外部定义,包内引用。
示例:
CREATE OR REPLACE PACKAGE PCK_TEST AS TYPE TYPE_TEST IS RECORD
(
R_VAL NUMBER,
DATE_VALUE DATE,
TEST_FIELD VARCHAR2(50 BYTE)
); TYPE TABLE_TEST IS TABLE OF TYPE_TEST; FUNCTION F_TEST_TABLE(P_DATE IN VARCHAR2) RETURN TABLE_TEST PIPELINED; END PCK_TEST;
CREATE OR REPLACE PACKAGE BODY PCK_TEST AS FUNCTION F_TEST_TABLE(P_DATE IN VARCHAR2) RETURN TABLE_TEST PIPELINED IS L_ROW TYPE_TEST; BEGIN FOR I IN 1..10
LOOP L_ROW.R_VAL := I;
L_ROW.DATE_VALUE := TO_DATE(P_DATE,'YYYY-MM-DD HH24:MI:SS');
L_ROW.TEST_FIELD := 'TEST';
---如果TYPE_TEST定义为Object类型,则可以这么赋值
---L_ROW := TYPE_TEST(I,TO_DATE(P_DATE,'YYYY-MM-DD HH24:MI:SS'),'TEST')
PIPE ROW(L_ROW); END LOOP;
RETURN; EXCEPTION
--YOUR EXCEPTION SQL STATEMENT
WHEN OTHERS THEN RETURN;
END F_TEST_TABLE; END PCK_TEST;
调用函数:
调用时需要与Table关键字配合使用,如下图所示。

Oracle管道函数示例的更多相关文章
- Oracle管道函数(Pipelined Table Function)介绍
一 概述: 1.管道函数即是能够返回行集合(能够使嵌套表nested table 或数组 varray)的函数,我们能够像查询物理表一样查询它或者将其 赋值给集合变量. 2.管道函数为并行运行,在普 ...
- oracle管道函数的用法
oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合,下面将介绍oracle管道函数的语法. 在普通的函数中,使用dbms_output输出的信息,需要在服务器执行完整个函数 ...
- oracle管道函数的用法(一行拆为多行)
oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合 如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline funct ...
- Oracle管道函数(Pipelined Table Function)实现的实例
1. 简单的例子(返回单列的表) 1>创建一个表类型 create or replace type t_table is table of number; 2>创建函数返回上面定义的类型 ...
- 管道函数(pipelined function)简单使用示例
-----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别
参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- ORACLE 日期函数
ORACLE 日期函数 SYSDATE 当前的数据库系统时间 ADD_MONTHS(加减指定的月份) MONTHS_BETWEEN(取两个日期之间相隔的月数) LAST_DAY(取指定日期所在月的最 ...
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
随机推荐
- P117、面试题18:树的子结构
题目:输入两棵二叉树A和B,判断B是不是A的子结构.二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNod ...
- 【HDOJ】1667 The Rotation Game
1. 题目描述有个#字型的条带,可以从横线或竖线进行循环移动,求通过各种移动最终使中心的8个字符全等的长度最短并相同长度字典序最小的操作序列.2. 基本思路24个数据,8种移动方式,数据量很小了,所以 ...
- bzoj1385: [Baltic2000]Division expression
欧几里得算法.可以发现规律,a[2]作为分母,其他作为分子,必定是最好的选择.判断是否为整数即可. #include<cstdio> #include<cstring> #in ...
- [swustoj 404] 最小代价树
最小代价树(0404) 问题描述 以下方法称为最小代价的字母树:给定一正整数序列,例如:4,1,2,3,在不改变数的位置的条件下把它们相加,并且用括号来标记每一次加法所得到的和. 例如:((4+1)+ ...
- [POJ 2420] A Star not a Tree?
A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4058 Accepted: 200 ...
- Entity Framework 数据生成选项DatabaseGenerated
在EF中,我们建立数据模型的时候,可以给属性配置数据生成选项DatabaseGenerated,它后有三个枚举值:Identity.None和Computed. Identity:自增长 None:不 ...
- 如何在asp.net mvc3中使用HttpStatusCode
下载了asp.net mvc 4的源码看了看,没怎么看清楚.不过个人觉得MVC4 beta中Web API这个是比较不错的,虽然说它是往传统回归. web api最好的莫过于它更加适合使用jquery ...
- mina2
远程通信 Mina2 学习笔记 作者:李少华 邮箱:xiaosanshaoli@126.com QQ:305409913 2010-12-23 初稿 引言... 1 一. Mina ...
- 9、四大组件之四-Broadcast Receiver
课程目标: 了解Android消息机制 掌握Broadcast发送消息的两种类型 掌握BroadcastReceiver接收消息的编程 重点难点: sendOrderedBroadcast()的理解 ...
- Tomcat 7 Connector 精读(2) 协议处理器 Http11Protocol(待续)
. Http11Protocol是阻塞式IO的实现,上图的几个方法是它的生命周期相关的方法.