KingbaseES 如何实现Oracle pipelined 功能
管道函数即是可以返回行集合(可以使嵌套表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 功能的更多相关文章
- 转-利用Oracle审计功能来监测试环境的变化
http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...
- Oracle Pipelined Table Functions简介
转自: http://www.linuxidc.com/Linux/2011-05/35797.htm //概况 //基本上,当你希望一个PLSQL(或者java或者c)程序作为数据源,而不是表, ...
- KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用
说明: KingbaseES V8R6版本中的兼容Oracle的exp-imp导入导出工具,支持完全模式.用户模式和表模式的导出功能. 本次案例数据库版本: test=# select version ...
- KingbaseES CTID 与 Oracle ROWID
熟悉oracle的人都知道ROWID可用于快速的数据访问,KingbaseES 由于自身MVCC机制的原因,ctid 作为 oracle rowid 的替代方案不合适,但currtid 还是基本可以满 ...
- [转]ORACLE 审计功能
审计是对选定的用户动作的监控和记录,通常用于: u 审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不 ...
- 转- Oracle Audit 功能的使用和说明
http://blog.itpub.net/9399028/viewspace-712457/审计(Audit) 用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在syst ...
- 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”
oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条). 创建SNAPSHOT时选择天数, 默认14天. sq ...
- 有关mysql实现oracle分析函数功能的方法
目前公司erp开发有一个脚本需求:对于收款合同审批单和收款合同(n:1),需要获取收款审批单中最新的一条审批记录来更新其对应的收款合同的相关信息. 难点主要在对相同类别的属性进行分组然后组内排序(分组 ...
- oracle 审计功能
Oracle 11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 一.审计功能关闭 1. ...
随机推荐
- JavaScript易错知识点
JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...
- MySql查询日周月
常用计算日期的函数 日 date(日期) = CURDATE() 自然周 YEARWEEK(date_format(日期,'%Y-%m-%d') , 1) = YEARWEEK(now() , 1) ...
- Linux 源码编译安装软件
程序包编译安装的步骤: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 1.编译源码的项目工具 使用相关的 ...
- EasyExcel导出创建Excel下拉框
话不多说,上才艺. 下面代码粘贴即用 /** * * 导出表格带下拉框 */ @GetMapping("exportBox") public void export(HttpSer ...
- 什么是pytorch?
Pytorch是基于python的科学计算包,为两类受众提供服务 作为Numpy的替换,让你可以使用GPU的算力 作为一个深度学习计算平台提供最大的计算灵活性与速度 开始体验pytorch的基础功能 ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
- tsconfig常用配置全解
include, exclude, files配置项 extends配置 compilerOptions下的配置 compilerOptions.allowUnreachableCode compil ...
- 意向不到的Dubug妙招
1.直接dubug到想要到达的位置,直接点击旁边的数字即可. 2.debug后不想重新启动,想重新进入再执行一次debug,可以使用drop frame来删除当前栈,跳到之前的栈再一次进入这个栈. 注 ...
- 关于又拍云免费cdn全网加速服务的长期评测(各种踩坑)
原文转载自「刘悦的技术博客」 ( https://v3u.cn/a_id_128 ) 妇孺皆知,前端优化中最重要的优化手段之一就是cdn加速,所谓cdn加速就是采用更多的缓存服务器(CDN边缘节点), ...
- 原生js也可以自定义组件
Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的功能封装在您的代码之外)并且在您的web应用中使用它们. 它由三项主要技术组成,它们可以一起使用来创建封装功能的定制元 ...