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测试通过. ...
随机推荐
- MyBatis的动态SQL操作--更新
更新条件不确定,需要根据具体的情况生成sql语句. id是主键,一般不会去更新. 1.只更新name的值 update student set name = ? where id = ? 2.只更新s ...
- HDU4614【线段树。】
果然看了理解了一下大牛的代码然后自己敲结果果然有不少错误 回复说,线段树做为一种数据结构,最好以一种风格过一题裸的然后作为自己的模板.. 二分写的也很恶心哪 还有题目稍复杂一点的注定得推敲各种公式,不 ...
- ASCII码表详解
第一部分:ASCII非打印控制字符表 ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备.例如,12代表换页/新页功能.此命令指示打印机跳到下一页的开头.(参详ASCII码表 ...
- 移动端调试 weinre
weinre 是基于 Node 的工具,因此使用如下命令安装 weinre $ npm install -g weinre 用上面的命令将 weinre 安装到全局,然后就可以使用 weinre的命令 ...
- 【转】报错:Program "sh" not found in PATH
原文网址:http://www.cnblogs.com/SadNight/p/3406201.html (1) 报错:Program "sh" not found in PATH ...
- (转)solr排序OOM解决方法
转自 http://topcat.iteye.com/blog/1293650 问题 lucene使用排序时会将被排序字段全部加入内存再进行排序,当多次使用不同字段进行排序时会造成OOM问题 解决方案 ...
- ajax取json数据——简单的
json数据:json4.json <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- jQuery遍历DOM
jQuery提供了多种遍历DOM的方法.遍历方法中最大的种类是树遍历. 向上遍历DOM树 parent():返回被选元素的直接父元素 parents():返回被选元素的所有祖先元素,它一直遍历到根元素 ...
- VISUAL SVN安装 及客户端使用
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...
- 文件上传利器JQuery上传插件Uploadify
在做日常项目中,经常在后台需要上传图片等资源文件,之前使用过几次这个组件,感觉非常好用 ,但是每次使用的时候都是需要经过一番查阅,所以还不如记住在这里,以后使用的时候就翻翻. 他的官方网站如下:htt ...