数据库使用过成中,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,以及如何选择一个合适的方式返回结果集,是现场经常需要考虑的问题。

下面介绍KingbaseES中各种返回结果集的方式。

1.通过自定义类型方式,返回结果集

-- 测试数据:创建自定义类型
CREATE TYPE rctype AS(id int , nam varchar(10)); CREATE TYPE rctable IS TABLE OF rctype;

创建测试函数:

CREATE OR replace FUNCTION tablereturn1(x int) RETURNS rctable pipelined AS
BEGIN
FOR i IN 1..x LOOP
pipe row(rctype(i , to_char(i*i)));
END LOOP ;
RETURN ;
END ;

通过table函数方式返回函数结果集数据:

test=# SELECT * FROM TABLE(tablereturn1(5));
id | nam
----+-----
1 | 1
2 | 4
3 | 9
4 | 16
5 | 25
(5 行记录)

2.通过return返回定义的table类型,返回结果集

-- 测试数据:
CREATE TABLE "public"."table1" (
"id" integer NULL,
"nam" character varying(10 char) NULL
); INSERT INTO "public"."table1" ("id","nam") VALUES
(1,'a'),
(2,'b'),
(3,'c'),
(4,'d'),
(5,'e');

创建测试函数:

CREATE OR replace FUNCTION tablereturn2() RETURNS TABLE(id int , nam varchar(10))
AS
BEGIN
RETURN query SELECT id , nam FROM table1;
END ;

通过table函数方式返回函数结果集数据:

test=# SELECT * FROM tablereturn2();
id | nam
----+-----
1 | a
2 | b
3 | c
4 | d
5 | e
(5 行记录)

3.通过setof方式返回表结构,返回结果集

-- 测试数据:
CREATE TABLE "public"."table1" (
"id" integer NULL,
"nam" character varying(10 char) NULL
); INSERT INTO "public"."table1" ("id","nam") VALUES
(1,'a'),
(2,'b'),
(3,'c'),
(4,'d'),
(5,'e');

创建测试函数:

CREATE OR replace FUNCTION tablereturn3() RETURNS setof table1 AS
DECLARE
res record;
BEGIN
FOR res IN SELECT * FROM table1 LOOP
RETURN NEXT res;
END LOOP ;
RETURN;
END;

通过table函数方式返回函数结果集数据:

test=# select * from tablereturn3();
id | nam
----+-----
1 | a
2 | b
3 | c
4 | d
5 | e
(5 行记录)

Kingbase 函数查询返回结果集的更多相关文章

  1. Oracle中函数/过程返回结果集的几种方式

    原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    ...

  2. hibernate使用原生SQL查询返回结果集的处理

    今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQu ...

  3. KingbaseES函数如何返回结果集

    函数返回值一般是某一类型值,如int,varchar,date等,返回结果集时就需要用到setof语法. 创建数据 create table class(id number primary key, ...

  4. Oracle中函数如何返回结果集

    在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, ...

  5. 原生sql查询返回结果集处理方法

    今天博主用原生写查询的时候发现,查询出来的居然不是我数据表里的数据,而是一个对象 object(mysqli_result)#2 (5) { ["current_field"]=& ...

  6. 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

    相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的. ...

  7. php中判断mysql查询返回结果集是否为空

    我是php的新手,对于判断 $query = "SELECT * FROM driver; $result = mysql_query($query) or die(mysql_error( ...

  8. Oracle中函数/过程返回多个值(结果集)

    Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. (1) 返回游标: return的类型为:SYS_REFCUR ...

  9. postgresql 函数返回结果集(zz)

    pgsql function 系列之一:返回结果集--------------------------------------------------------------------------- ...

  10. oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法

    近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...

随机推荐

  1. IDA 常用快捷键记录

    常用快捷键1 1.切换文本视图与图表视图 空格键 2.返回上一个操作地址 ESC 3.搜索地址和符号 G 4.对符号进行重命名 N 5.常规注释 冒号键 6.可重复注释 分号键 7.添加标签 Alt+ ...

  2. 【译】代码更快、更好,借助 GitHub Copilot 的新功能:斜杠命令和上下文变量

    你是否曾经希望有一个人工智能助手可以帮助你更快更好地编写代码?那就是 Visual Studio Copilot Chat 为您提供的:一个人工智能驱动的结对程序员,可以回答您的问题,建议代码片段,解 ...

  3. 前后端分离解决跨域cors问题

    修改windows的hosts文件 vim C:\Windows\System32\drivers\etc\hosts 添加域名 前端:www.luffycity.cn 后端:api.luffycit ...

  4. 矩池云上 git clone --recursive 出错,怎么解决

    遇到问题 有时候安装包教程里 git clone 的时候会出现以下错误: git clone --recursive https://github.91chi.fun/https://github.c ...

  5. 【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料

    问题描述 使用 key Vault 的sign接口,Request Body中的 Value 是要传什么呢? 签名后的内容如何在本地离线验证呢? Azure Key Vault Sign 接口:htt ...

  6. 小程序开发:接入腾讯云的人像动漫化api接口

    接口如下: 图片的传参方式有两种,一种是传图片的base64,一种是图片url: 我打算免费版使用base64,如果付费用户支持永久存储历史的图片记录(图片存储到腾讯云对象存储中). 前端框架我用的u ...

  7. SpringCloud Hystrix断路器的基本使用

    官网资料: https://github.com/Netflix/Hystrix/wiki/How-To-Use 1. 服务雪崩 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系, ...

  8. Java //输入两个正整数m和n,求其最大的公约数和最小公倍数//12和20的最大公约数是4,最小公倍数是60

    1 //输入两个正整数m和n,求其最大的公约数和最小公倍数 2 //12和20的最大公约数是4,最小公倍数是60 3 4 Scanner scan = new Scanner(System.in); ...

  9. Zabbix“专家坐诊”第179期问答汇总

    欢迎大家加入乐维社区zabbix问答专栏,除了在论坛发帖求问外,还可以在QQ群里交流进步,并且每周三我们会进行免费的技术答疑活动. 问题一: Q:Zabbix alert syncer process ...

  10. 删除文件或目录 被进程占用或锁定locked 查询进程 资源监视器-cpu-关联句柄-输入文件全路径

    删除文件或目录 被进程占用或锁定 查询进程 资源监视器-cpu-关联句柄-输入文件全路径 右键点击桌面的Win图标,点击"任务管理器">>点击左上角"性能&q ...