oracle的管道函数

Oracle管道函数(Pipelined Table Function)
oracle管道函数

1、管道函数即是可以返回行集合(可以使嵌套表nested table 或数组 varray)的函数,我们可以像查询物理表一样查询它或者将其赋值给集合变量。

2、管道函数为并行执行,在普通的函数中使用dbms_output输出的信息,需要在服务器执行完整个函数后一次性的返回给客户端。如果需要在客户端

实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。

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

原文:https://blog.csdn.net/indexman/article/details/27580517

1.简单例子

 
  1. --PIPELINED 表示管道函数

  2. --PIPE ROW 返回该集合的单个元素

  3. --创建type类型 t_table

  4. create or replace type t_table is table of number

  5. --创建函数

  6. create or replace function f_pipe(s number)

  7. return t_table pipelined --返回t_table

  8. as

  9. v_number number;

  10. begin

  11. for i in 1..s loop

  12. v_number := i;

  13. pipe row(v_number);--返回集合单个的值

  14. end loop;

  15. return;

  16. end f_pipe;

  17. --测试函数

  18. select * from table(f_pipe(5))

 结果图

2.复杂一点的例子

 
  1. --创建一个表类型

  2. create or replace type obj_table as object

  3. (

  4. id int,

  5. name varchar2(50)

  6. )

  7. --创建返回多个表类型的类型

  8. create or replace type list_table is table of obj_table

  9. --创建函数

  10. create or replace function f_pipes(s number)

  11. return list_table pipelined --list_table返回类型

  12. as

  13. v_obj_table obj_table;

  14. begin

  15. for i in 1..s loop

  16. v_obj_table := obj_table(i,to_char(i*i));

  17. pipe row(v_obj_table);--返回obj_table类型的单列数据

  18. end loop;

  19. return;

  20. end f_pipes;

  21. --测试函数

  22. select * from table(f_pipes(5))

结果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ok060

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值