管道函数即是可以返回行集合(可以使嵌套表nested table 或数组 varray)的函数,我们可以像查询物理表一样查询它或者将其赋值给集合变量。KingbaseES 数据库可以用 setof 实现类似 Oracle 的pipelined 功能,C5版本开始,也支持pipeline。

一、Oracle pipelined 使用例子

create or replace type varchar_type as table of varchar(100);

create or replace function func_pipeline_test return varchar_type
pipelined as
begin
for i in 1..5 loop
pipe row('Pipeline '||i||' '||systimestamp);
dbms_lock.sleep(1);
end loop;
return;
end;
/ SQL> select * from table(func_pipeline_test); COLUMN_VALUE
--------------------------------------------------------------------------------
Pipeline 1 01-JUL-21 07.22.21.630651000 PM +08:00
Pipeline 2 01-JUL-21 07.22.22.630975000 PM +08:00
Pipeline 3 01-JUL-21 07.22.23.631054000 PM +08:00
Pipeline 4 01-JUL-21 07.22.24.631381000 PM +08:00
Pipeline 5 01-JUL-21 07.22.25.631216000 PM +08:00

二、KingbaseES

1、pipelined

从V8R6C5 开始,KingbaseES 支持 pipeline,其使用与 Oracle 完全相同。

create or replace type varchar_type as table of varchar(100);

create or replace function func_pipeline_test return varchar_type
pipelined as
begin
for i in 1..5 loop
pipe row('Pipeline '||i||' '||systimestamp);
perform pg_sleep(1);
end loop;
return;
end;
/ test=# select * from table(func_pipeline_test());
column_value
------------------------------------------
Pipeline 1 2021-12-22 15:26:45.572780+08
Pipeline 2 2021-12-22 15:26:45.572780+08
Pipeline 3 2021-12-22 15:26:45.572780+08
Pipeline 4 2021-12-22 15:26:45.572780+08
Pipeline 5 2021-12-22 15:26:45.572780+08
(5 rows)

2、setof 使用例子

create or replace function func_pipeline_test1 returns setof text as
declare
v_text text;
begin
for i in 1..5 loop
return query select 'Pipeline '||i||' '||clock_timestamp() ;
perform sys_sleep(1);
end loop;
return;
end
/ test=# select func_pipeline_test1();
func_pipeline_test1
------------------------------------------
Pipeline 1 2021-09-13 17:36:55.571164+08
Pipeline 2 2021-09-13 17:36:56.572743+08
Pipeline 3 2021-09-13 17:36:57.574097+08
Pipeline 4 2021-09-13 17:36:58.575511+08
Pipeline 5 2021-09-13 17:36:59.577169+08 (5 rows) create or replace function func_pipeline_test2 returns setof t1 as
declare
v_t1 t1%rowtype;
begin
for v_t1 in (select * from t1) loop
return next v_t1;
end loop;
return;
end
/

test=# select * from func_pipeline_test2();
id | name
----+------
1 | abc
2 | abc
3 | abc
4 | abc
5 | abc
6 | abc
7 | abc
8 | abc
9 | abc
10 | abc
(10 rows)

3、table function

create or replace type int_set as table of integer;

create or replace function func1() return int_set as
v_temp int_set := int_set(1,2,3);
begin
return v_temp;
end; test=# select func1();
func1
----------------
int_set(1,2,3)
(1 row) test=# select * from table(func1());
column_value
--------------
1
2
3

  

KingbaseES 如何实现Oracle pipelined 功能的更多相关文章

  1. 转-利用Oracle审计功能来监测试环境的变化

    http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...

  2. Oracle Pipelined Table Functions简介

    转自: http://www.linuxidc.com/Linux/2011-05/35797.htm //概况   //基本上,当你希望一个PLSQL(或者java或者c)程序作为数据源,而不是表, ...

  3. KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用

    说明: KingbaseES V8R6版本中的兼容Oracle的exp-imp导入导出工具,支持完全模式.用户模式和表模式的导出功能. 本次案例数据库版本: test=# select version ...

  4. KingbaseES CTID 与 Oracle ROWID

    熟悉oracle的人都知道ROWID可用于快速的数据访问,KingbaseES 由于自身MVCC机制的原因,ctid 作为 oracle rowid 的替代方案不合适,但currtid 还是基本可以满 ...

  5. [转]ORACLE 审计功能

    审计是对选定的用户动作的监控和记录,通常用于: u          审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不 ...

  6. 转- Oracle Audit 功能的使用和说明

    http://blog.itpub.net/9399028/viewspace-712457/审计(Audit) 用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在syst ...

  7. 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”

    oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条).  创建SNAPSHOT时选择天数, 默认14天. sq ...

  8. 有关mysql实现oracle分析函数功能的方法

    目前公司erp开发有一个脚本需求:对于收款合同审批单和收款合同(n:1),需要获取收款审批单中最新的一条审批记录来更新其对应的收款合同的相关信息. 难点主要在对相同类别的属性进行分组然后组内排序(分组 ...

  9. oracle 审计功能

    Oracle 11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 一.审计功能关闭 1. ...

随机推荐

  1. CVPR2022 | 可精简域适应

    前言 在本文中,作者引入了一个简单的框架,即Slimmable Domain Adaptation,以通过权重共享模型库改进跨域泛化,从中可以对不同容量的模型进行采样,以适应不同的精度效率权衡.此外, ...

  2. 在Ubuntu系统下,可执行文件的表现形式

    在Windows系统下的可执行文件都带有.exe的后缀,而对于Linux系统下的可执行文件,则不会带有后缀,如下图 对于.txt文件,Ubuntu下也有相应的记事本程序打开,对于.xml,ubuntu ...

  3. python做小游戏——做个马里奥分分钟解决

    一.前言 嗨喽,大家好呀!这里是小熊猫 在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人已经被遗忘? 马里奥是靠吃蘑菇成长,闻名世界的超级巨星.特征是大鼻子.头戴帽子.身穿背带工作服.还留着胡子.帽子加 ...

  4. 使用EasyExcel导出图片及异常处理

    1.使用String类型导出   定义自己的Converter,不使用默认的StringImageConverter 如果图片路径为空或者图片路径是错误的,返回相应的内容 import java.io ...

  5. Java TIF、JPG、PNG等图片转换

    代码如下: public static void main(String[] args) { try { BufferedImage bufferegImage = ImageIO.read(new ...

  6. java反序列化漏洞专项

    背景条件:java的框架,java的应用程序,使用序列化,反序列化操作非常多.在漏洞挖掘中,代码审计中,安全研究中,反序列化漏洞是个重点项,不可忽视.尤其是java应用程序的rce,10个里面有7个是 ...

  7. 《SVDNet for Pedestrian Retrieval》理解

    <SVDNet for Pedestrian Retrieval>理解 Abstract: 这篇文章提出了一个用于检索问题的SVDNet,聚焦于在行人再识别上的应用.我们查看卷积神经网络中 ...

  8. Elasticsearch深度应用(下)

    Query文档搜索机制剖析 1. query then fetch(默认搜索方式) 搜索步骤如下: 发送查询到每个shard 找到所有匹配的文档,并使用本地的Term/Document Frequer ...

  9. 新版recon-ng安装模块

    表现:进入后报[*] No modules enabled/installed. 1.直接在recon-ng控制台输入marketplace install all,用来下载所有插件,如果不可以,往下 ...

  10. 常用的函数式接口_Function接口练习_自定义函数模型拼接

    package com.yang.Test.FunctionStudy; import java.util.function.Function; /** * 练习:自定义函数模型拼接 * 题目: * ...