`

Oracle管道函数(转)

 
阅读更多

http://www.blogjava.net/hill/articles/oraclepipelined.html(转)

 

Typical Pipelined Example

This are the typical steps to perform when using PL/SQL Table Functions:

The producer function must use the PIPELINED keyword in its declaration.
 
The producer function must use an OUT parameter that is a record, corresponding to a row in the result set.
 
Once each output record is completed, it is sent to the consumer function through the use of the PIPE ROW keyword.
 
The producer function must end with a RETURN statement that does not specify any return value.
 
The consumer function or SQL statement then must use the TABLE keyword to treat the resulting rows from the PIPELINE function like a regular table.

The first step is to define the format of the rows that are going to be returned. In this case here, we're going to return a INT, DATE followed by a VARCHAR2(25).

CREATE OR REPLACE TYPE myObjectFormat AS OBJECT( A INT, B DATE, C VARCHAR2(25))

 

 

 

Next a collection type for the type previously defined must be created.

CREATE OR REPLACE TYPEmyTableType
  AS TABLE OF myObjectFormat

 

 

 

 

Finally, the producer function is packaged in a package. It is a pipelined function as indicated by the keyword pipelined.

CREATE OR REPLACE PACKAGE myDemoPack
AS
      FUNCTION prodFunc RETURNmyTableTypePIPELINED;
END;

 

 

CREATE OR REPLACE PACKAGE BODY myDemoPack AS
FUNCTION prodFunc RETURNmyTableTypePIPELINED IS
BEGIN
  FOR i in 1 .. 5
    LOOP
      PIPE ROW (myObjectFormat(i,SYSDATE+i,'Row '||i));
    END LOOP;
    RETURN;
  END;
END;

 

Test It:

ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';
SELECT * FROM TABLE(myDemoPack.prodFunc());

         A B          C
---------- ---------- ---------
         1 31.05.2004 Row 1
         2 01.06.2004 Row 2
         3 02.06.2004 Row 3
         4 03.06.2004 Row 4
         5 04.06.2004 Row 5

Conclusion

Pipelined functions are useful if there is a need for a data source other than a table in a select statement.

分享到:
评论

相关推荐

    oracle管道函数用法

    ### Oracle管道函数详解 #### 一、概述 Oracle管道函数是一种特殊类型的函数,它能够返回一个数据集合,并且能够在函数执行的过程中逐步返回结果,而不仅仅是最后的结果。这种特性使得管道函数非常适合于处理大量...

    oracle 管道函数+动态游标

    根据提供的Oracle管道函数和动态游标的代码片段及描述,我们可以深入了解其背后的技术要点与实现细节。下面将逐一解析这些知识点。 ### Oracle管道函数 管道函数(Pipe-lined Function)是Oracle中一种特殊类型的...

    详解oracle管道函数的用法(一行拆为多行)

    oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合 如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。 关键字PIPELINED表明这是一个...

    oracle split函数

    本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...

    Oracle中实现Split函数功能

    这个函数使用了 Oracle 的管道化函数(pipelined function)来返回拆分后的结果。函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,...

    PostgreSQL 管道函数(Pipelined Table Function)——兼容oracle

    关键字PIPELINED表明这是一个oracle管道函数,oracle管道函数的返回值类型必须为集合,在函数中,PIPE ROW语句被用来返回该集合的单个元素,函数以一个空的RETURN 语句结束,以表明它已经完成。 由于管道

    oracle利用UTL-HTTP包访问SOAP、HTTP接口并通过管道函数解析xml响应文件用游标以表方式输出

    本文档详细介绍了如何在 Oracle 数据库中使用 UTL_HTTP 包访问 SOAP 或 HTTP 接口,并通过创建管道函数来解析返回的 XML 响应。整个过程包括了必要的数据库配置、定义数据类型、创建管道函数和存储过程等步骤。这些...

    oracle split 函数

    函数的返回类型被声明为之前定义的`type_split`类型,并且使用了管道函数(`pipelined`)来逐行输出分割后的字符串。 ```sql create or replace function split(p_list varchar2, p_sep varchar2 := ';') return ...

    SQLServer和Oracle常用函数对比.txt

    - **Oracle**: 使用`CONCAT`函数或双管道符号`||`。 ```sql SELECT CONCAT('11', '22', '33') AS Value FROM DUAL; ``` 24. **位置查找(CHARINDEX/INSTR)** - **SQLServer**: 使用`CHARINDEX`函数查找子字符...

    SQLServer和Oracle常用函数对比

    - Oracle使用`CONCAT()`函数或双管道`||`连接字符串。 #### 查找位置 - SQLServer使用`CHARINDEX()`函数查找子字符串的位置。 - Oracle使用`INSTR()`函数查找子字符串的位置,语法略有不同。 #### 替换子字符串 - ...

    《剑破冰山__Oracle开发艺术_》高清PDF

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫淡、管道函数的学习与实战应用、巧用锁特性避免...

    剑破冰山++Oracle开发艺术[1].part10

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    Oracle函数大全

    "Oracle函数大全"这个资源涵盖了Oracle数据库中常用的各种函数,可以帮助开发者解决日常编程中遇到的问题。 1. **字符串处理函数**: - `UPPER` 和 `LOWER`:用于将字符串转换为大写或小写。 - `SUBSTR`:从字符...

    Oracle 中 table 函数的应用浅析

    该函数可以平行执行,并可持续输出数据流,被称作管道式输出。应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表。 1. 用游标传递数据 利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数...

    oracle的开发技术

    8. **管道函数**:管道函数(PIPELINED)允许PL/SQL程序作为一个数据源,通过将数据流传递给其他函数或操作,提高查询效率和灵活性。 9. **递归查询**:使用递归WITH子句,Oracle可以处理复杂的递归关系,如图论中...

    剑破冰山++Oracle开发艺术[1].part01

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    剑破冰山++Oracle开发艺术[1].part07

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    剑破冰山++Oracle开发艺术[1].part04

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    剑破冰山++Oracle开发艺术[1].part02

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

Global site tag (gtag.js) - Google Analytics