Kingbase 函数查询返回结果集
数据库使用过成中,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,以及如何选择一个合适的方式返回结果集,是现场经常需要考虑的问题。
下面介绍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 函数查询返回结果集的更多相关文章
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
- hibernate使用原生SQL查询返回结果集的处理
今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQu ...
- KingbaseES函数如何返回结果集
函数返回值一般是某一类型值,如int,varchar,date等,返回结果集时就需要用到setof语法. 创建数据 create table class(id number primary key, ...
- Oracle中函数如何返回结果集
在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, ...
- 原生sql查询返回结果集处理方法
今天博主用原生写查询的时候发现,查询出来的居然不是我数据表里的数据,而是一个对象 object(mysqli_result)#2 (5) { ["current_field"]=& ...
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的. ...
- php中判断mysql查询返回结果集是否为空
我是php的新手,对于判断 $query = "SELECT * FROM driver; $result = mysql_query($query) or die(mysql_error( ...
- Oracle中函数/过程返回多个值(结果集)
Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. (1) 返回游标: return的类型为:SYS_REFCUR ...
- postgresql 函数返回结果集(zz)
pgsql function 系列之一:返回结果集--------------------------------------------------------------------------- ...
- oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法
近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...
随机推荐
- 【Unity3D】UGUI回调函数
1 简述 UGUI 回调函数主要指鼠标进入.离开.点下.点击中.抬起.开始拖拽.拖拽中.拖拽结束 UI 控件触发的回调.使用 UGUI 回调函数时,需要引入 UnityEngine.EventSy ...
- Js捕获异常的方法
Js捕获异常的方法 JavaScript的异常主要使用try catch finally语句以及窗口对象window的onerror事件来捕获. try catch finally try catch ...
- 全排列II
全排列II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 题解 /** * @param { ...
- Springboot+Freemarker+Boostrap实现用户增删改查实战
说明 做java web用的2大模板语言分别是:thymeleaf和freemarker,thymeleaf前面已经用了很多了,所以今天用一下这个freemarker. 技术栈 springboot ...
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement
新安装好的mysql5.7数据库,用root登录以后执行操作报这个错. 解决方法: mysql> alter user 'root'@'localhost' identified by 'roo ...
- 获取Linux mac地址(centos与ubuntu通用)
ip -a addr| grep link/ether | awk '{print $2}'| head -n 1 获取Linux mac地址(centos与ubuntu通用)
- 【Azure 应用服务】Azure Function Timer触发函数加上Singleton后的问题
问题描述 在Azure Function Timer Trigger的函数中,添加了Singleton属性,当Function的实例变为3个后,发现Timer函数并没有在三个实例上同时运行,每次触发时 ...
- 从真实案例出发,全方位解读 NebulaGraph 中的执行计划
本文整理自 NebulaGraph 核心开发 Yee 在直播<聊聊执行计划这件事>中的主题分享.分享视频参见 B站:https://www.bilibili.com/video/BV1Cu ...
- 19 SWERC 2022-2023 - Online Mirror (Unrated, ICPC Rules, Teams Preferred)L. Controllers(数学公式+瞎搞)
L. Controllers 思路: #include <bits/stdc++.h> #define int long long #define rep(i, a, b) for(int ...
- Java开发者的Python快速进修指南:掌握T检验
前言 T检验是一种用于比较两个独立样本均值差异的统计方法.它通过计算T值和P值来判断样本之间是否存在显著性差异.通常情况下,我们会有两组数据,例如一组实验组和一组对照组. T检验的原假设是两组样本的均 ...