`

ORACLE管道化表函数

阅读更多

        table型函数用来返回类似表结构的集合,常规的table型函数需要先填充完集合才能返回,如果集合对象太大会消耗大量内存;pipelined的table型函数能够在边填充时边返回,从而避免占用过多内存。

一.Table Functions

-- Create the types to support the table function.
DROP TYPE t_tf_tab;
DROP TYPE t_tf_row;

CREATE TYPE t_tf_row AS OBJECT (
  id           NUMBER,
  description  VARCHAR2(50)
);
/

CREATE TYPE t_tf_tab IS TABLE OF t_tf_row;
/

-- Build the table function itself.
CREATE OR REPLACE FUNCTION get_tab_tf (p_rows IN NUMBER) RETURN t_tf_tab AS
  l_tab  t_tf_tab := t_tf_tab();
BEGIN
  FOR i IN 1 .. p_rows LOOP
    l_tab.extend;
    l_tab(l_tab.last) := t_tf_row(i, 'Description for ' || i);
  END LOOP;

  RETURN l_tab;
END;
/

运行如下语句测试一下

-- Test it.
SELECT *
FROM   TABLE(get_tab_tf(10))
ORDER BY id DESC;

结果如下:

 

二.Pipelined Table Functions

-- Build a pipelined table function.
CREATE OR REPLACE FUNCTION get_tab_ptf (p_rows IN NUMBER) RETURN t_tf_tab PIPELINED AS
BEGIN
  FOR i IN 1 .. p_rows LOOP
    PIPE ROW(t_tf_row(i, 'Description for ' || i));   
  END LOOP;

  RETURN;
END;
/

运行如下语句测试一下

-- Test it.
SELECT *
FROM   TABLE(get_tab_ptf(10))
ORDER BY id DESC;

结果如下:

 

文章来源:http://blog.csdn.net/t0nsha/article/details/7479385

  • 大小: 38.4 KB
  • 大小: 38.6 KB
分享到:
评论

相关推荐

    Oracle中实现Split函数功能

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

    Oracle 中 table 函数的应用浅析

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

    在Oracle的函数中,返回表类型的语句

    在Oracle数据库中,与SQL Server不同的是,不能直接在函数中声明和返回表变量。但是,Oracle提供了类似的功能,可以通过...通过管道化表函数或普通方式,你可以根据具体需求灵活选择合适的方法来构建返回表类型的函数。

    oracle spatial 用户指南

    6. **Network Data Model (NDM)**: Oracle Spatial的NDM用于处理网络数据,如道路、管道或电力线路。它支持网络分析,例如找出最短路径、服务区域分析等。 7. **Topology**: Oracle Spatial支持拓扑规则,确保空间...

    用Pipelined Table实现split函数的示例

    Oracle提供了一种特殊类型——Pipelined Table Function(管道表函数),它可以用于解决这类问题。本文档将详细介绍如何使用Pipelined Table Function来实现一个split函数,该函数可以将输入字符串根据给定的分隔符...

    Oracle 20071025_PLSQLTuning.pdf

    表函数和管道化表函数可以用于返回集合。这两种类型的函数在处理大量数据时非常有效,尤其是当结果集很大时。 ### 二、系统配置 除了编码实践之外,合理的系统配置也是提高 PL/SQL 性能的关键。例如,调整 Oracle ...

    Oracle - In Database Map-Reduce

    传统的Map-Reduce框架通常运行在独立的计算集群上,而Oracle数据库通过其独特的特性——**Pipeline Table Functions**(管道表函数)——提供了一种直接在数据库内部实现Map-Reduce的方式,从而实现了真正的“in-...

    Oracle内置包_reference

    DBMS_UTILITY包提供了一系列实用函数,如分析SQL语句(ANALYZE_STATEMENT)、格式化输出PL/SQL块(FORMAT_SOURCE)以及获取数据库版本信息(GET_VERSION)。这个包对于调试和优化PL/SQL代码非常有用。 二、DBMS_...

    创建Oracle函数的示例

    在本文中,我们将深入探讨如何使用PL/SQL创建Oracle函数,并介绍一些高级技术,如管道操作。 首先,创建Oracle函数的基本结构包括函数名、输入参数(如果有的话)、返回类型和函数体。以下是一个简单的示例: ```...

    剑破冰山 Oracle开发艺术

    Oracle数据库作为市场上占有率最高的商业数据库之一,以其强大的功能和智能化的管理工具,使得Oracle数据库管理(DBA)的工作日趋简化,同时也推动了Oracle开发人员的需求和人数的增加。本书旨在帮助读者掌握中高级...

    剑破冰山 Oracle开发艺术.part2.rar

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

    Oracle内置包的使用方法.rar

    Oracle数据库系统提供了丰富的内置包,这些包包含了大量预定义的函数和过程,为数据库管理员和开发者提供了极大的便利。本文将详细介绍Oracle内置包的使用方法,包括它们的功能、调用方式以及示例应用。 1. **DBMS_...

    在Oracle运行操作系统命令

    `DBMS_PIPE`包提供了在Oracle进程中创建和管理管道的能力,允许两个或多个Oracle进程之间进行数据交换。这种机制类似于操作系统中的管道功能,但它是在Oracle环境下实现的,并具有不同的内部处理方式。 #### 实现...

    剑破冰山 Oracle开发艺术.part1.rar(共3part)

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

    剑破冰山 Oracle开发艺术.part3.rar (共3part)

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

    oracle 学习包含SQL.TERADATA,UNIX

    SQL(结构化查询语言)是操作和查询数据库的标准语言,无论是Oracle还是其他数据库系统,掌握SQL都是必要的。Teradata则是一款大规模并行处理数据库,尤其适用于大数据处理和分析。而Unix操作系统以其稳定性和强大的...

    如何在Oracle8.1.6 Spatial 上编程

    在Oracle Spatial中,你可以存储、查询、分析和可视化地理信息。以下是对Oracle8.1.6 Spatial编程的一些关键知识点: 1. **Spatial 数据类型**:Oracle Spatial引入了几何数据类型,如SDO_GEOMETRY,用于存储点、线...

    ORACLE 10 g spatial的使用方法简介

    4. Geocoding:对于非结构化的地址数据,Oracle 10g Spatial提供了地理编码功能,可以将这些地址转换为精确的经纬度坐标。 5. 索引改进:R树索引被广泛采用,取代了旧的四叉树索引,提升了空间查询的效率。 6. 新...

    Oracle_Database10g_性能调整与优化-第10章_使用PLSQL提高性能

    管道表函数允许在 PL/SQL 中创建和返回复杂的结果集,这对于处理大量数据和复杂的业务逻辑特别有用。 #### 28. 使用条件编译限制调试命令 条件编译是一种在编译时根据不同的条件选择性地包含或排除代码的方法。...

Global site tag (gtag.js) - Google Analytics