`
wuhuizhong
  • 浏览: 682840 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

Oracle Pipelined Table Functions

 
阅读更多

在实际的应用中,为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成。REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行具体化。 9i 通过引入的管道化表函数纠正了后一种情况。表函数是返回整个行的集(通常作为一个集合)的函数,可以直接从 SQL 语句中进行查询,就好像它是一个真正的数据库表一样。管道化表函数与之相似,但是它像在构建时一样返回数据,而不是一次全部返回。管道化表函数更加有效,因为数据可以尽可能快地返回。

 

 

管道化表函数必须返回一个集合。在函数中,PIPE ROW 语句被用来返回该集合的单个元素,该函数必须以一个空的 RETURN 语句结束,以表明它已经完成。一旦我们创建了上述函数,我们就可以使用 TABLE 操作符从 SQL 查询中调用它。

 

 

管道化表函数经常被用来把数据从一种类型转化成另一种类型。

/*
概况   
基本上,当你希望一个PLSQL(或者java或者c)程序作为数据源,而不是表,   
你可能会用到管道函数(pipelined function).   
pipelined function操作起来就像一张表   
一个pl/sql函数可能会用于数据仓库的数据库里面,转换大量的数据。 
这可能包括格式化一系列转换数据,它们是不同的函数执行后得到的结果。   
在Oracle database 9i之前,大量的数据转换,既需要显著的内存开销,   
又需要在转换的每个阶段将数据存储在中间表里面。在这两种情况下,   
加载进程都会致使性能的下降。
使用PL/SQL表函数,可以在数据转换的时候有效的减少开销。PL/SQL表函数   
可以接收和返回多行,交付这些数据,当他们准备好的时候,而不是一次性的处理;   
而且PL/SQL表函数还可以并行执行操作。 
*/
CREATE OR REPLACE TYPE str_array AS TABLE OF VARCHAR2(10);
/

CREATE OR REPLACE FUNCTION tf(stringin VARCHAR2)
  RETURN str_array PIPELINED IS i PLS_INTEGER;
str VARCHAR2(100);
tab sys.dbms_utility.uncl_array;
BEGIN
  str := '"' || REPLACE(stringin, ',', '","') || '"';
  sys.dbms_utility.comma_to_table(str, i, tab);

  FOR j IN 1 .. 5 LOOP
    PIPE ROW(TRANSLATE(tab(j), 'A"', 'A'));
  END LOOP;
  RETURN;
END tf;
/

SELECT * FROM TABLE(CAST(tf('1001,1002,1003,1004,1005') AS str_array));

 

 

分享到:
评论

相关推荐

    Oracle - In Database Map-Reduce

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

    pipeline ADC的设计指南

    Pipeline ADC设计指南 Pipeline ADC是一种常用的模数转换器架构,它通过将模拟信号分解成多个阶段来实现高精度的数字化。下面我们将详细介绍Pipeline ADC的设计指南。 一、Pipeline ADC的基本原理 Pipeline ADC...

    Jenkins Pipeline 部署 SpringBoot 应用的教程详解

    Jenkins Pipeline 部署 SpringBoot 应用详解 本篇文章主要介绍了使用 Jenkins Pipeline 部署 SpringBoot 应用的详细教程,从安装依赖包到环境准备、安装 Jenkins 等步骤进行详细的介绍,对读者学习或工作具有一定的...

    gltf-pipeline-3.0.2.zip

    《gltf-pipeline:构建三维图形的利器》 gltf-pipeline 是一个强大的工具集,主要用于处理和优化基于 glTF(GL Transmission Format)的三维模型数据。glTF 是一种开放标准的三维模型格式,旨在高效、轻量地传输和...

    Doris PipeLine的设计文档.pdf

    Doris PipeLine设计文档 Doris PipeLine设计文档是关于Doris执行引擎的设计文档,旨在解决当前Doris执行引擎中存在的一些问题,如无法充分利用多核计算能力、提升查询性能、手动设置并行度等问题。该设计文档提出了...

    高通QCOM camera Pipeline可视化工具 1.4版本

    高通QCOM camera Pipeline可视化工具 1.4版本

    Jenkins高级篇之Pipeline技巧篇-1-小白搭建Pipeline项目开发环境.rar

    本篇重点讲解的是Jenkins Pipeline的高级技巧,旨在帮助初学者,即"小白",快速搭建并掌握Pipeline项目的开发环境。 一、Jenkins Pipeline基础 Jenkins Pipeline是一种定义和执行CI/CD流程的声明式或脚本化方式。...

    jenkins 构建项目之 pipeline基础教程

    jenkins 构建项目之 pipeline基础教程 jenkins Pipeline 是一种基于工作流框架的自动化构建工具,它可以将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。...

    Oracle Service Bus实例开发详解

    本文档将详细介绍Oracle Service Bus中的两个具体实例——Two Loan Application Examples的开发、部署及调试流程,并重点介绍如何使用Pipeline和RouteNode两种不同的方式来实现业务逻辑。 #### 查看 Web Service ...

    Avalon-MM Pipeline Bridge

    Avalon-MM Pipeline Bridge是Qsys系统中一种重要的互联组件,用于优化基于Avalon-MM接口的SoC(System-on-a-Chip)设计中的数据传输性能。Avalon-MM是Altera公司(现已被Intel收购)开发的一种内存映射协议,广泛...

    jenkins流水线任务pipeline使用JaCoCo

    https://stackoverflow.com/questions/41893846/jacoco-coverage-in-jenkins-pipeline jenkins官网介绍:https://jenkins.io/doc/pipeline/steps/jacoco/ 流水线语法的片段生成器可以选择jacoco,设置jacoco jacoco...

    Netty测试代码,尤其对于Pipeline顺序

    在本文中,我们将深入探讨Netty中的关键概念,尤其是Pipeline(管道)的顺序及其工作原理。 首先,让我们理解Netty的核心组件:Server和Client。在Netty中,服务器端通常被称为BossGroup和WorkerGroup,BossGroup...

    PyPI 官网下载 | bamboo-pipeline-3.6.3.tar.gz

    标题中的"PyPI 官网下载 | bamboo-pipeline-3.6.3.tar.gz"指出这是一个从Python Package Index(PyPI)官方站点获取的软件包,名为“bamboo-pipeline”。这个软件包的版本是3.6.3,并且是以tar.gz格式压缩的。在...

    D3D render pipeline

    This book describes the Direct3D graphics pipeline, from presentation of scene data to pixels appearing on the screen. The book is organized sequentially following the data °ow through the pipeline ...

    pipeline ADC

    ### Pipeline ADC概述与关键技术 #### 一、Pipeline ADC的基本概念 Pipeline ADC(流水线模数转换器)是一种高性能、高速度的模数转换技术,在现代通信系统、雷达系统及信号处理领域发挥着至关重要的作用。它能够...

    构建机器学习Pipeline

    构建机器学习Pipeline,也就是构建机器学习流程线,是数据科学和软件工程领域中的一个重要议题。在现实世界中,数据科学家通常在一个为统计和机器学习量身定做的开发环境中工作,例如使用Python等工具,在一个“沙盒...

    Android代码-pipeline

    Hosted Community Edition - Try It Now! ...Email: help@pipeline.ai Web: https://support.pipeline.ai YouTube: https://youtube.pipeline.ai Slideshare: https://slideshare.pipeline.ai Work

    jenkins-ci-pipeline-源码.rar

    Jenkins CI Pipeline 是一个强大的自动化工具,用于构建、测试和部署软件。Pipeline 允许开发者定义持续集成(CI)和持续部署(CD)的工作流程,这些工作流程是声明式的,可编写为版本化的代码,提高了可重复性和可...

    Jenkins高级篇之Pipeline技巧篇-5-pipeline中如何代码串联多个job的执行.rar

    在Jenkins自动化构建和部署的过程中,Pipeline作为一种强大的脚本化工具,可以让我们更灵活地管理持续集成和持续交付流程。本资料重点讲解了在Pipeline中如何通过代码串联多个job的执行,这对于构建复杂的CI/CD流程...

    pipeline studio快速入门

    pipeline studio快速入门,确实容易上手

Global site tag (gtag.js) - Google Analytics