首页 > 其他分享 >Kingbase 函数查询返回结果集

Kingbase 函数查询返回结果集

时间:2023-09-18 16:25:49浏览次数:38  
标签:返回 table1 END 函数 CREATE Kingbase nam 查询 id

数据库使用过成中,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,以及如何选择一个合适的方式返回结果集,是现场经常需要考虑的问题。
下面介绍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 行记录)

标签:返回,table1,END,函数,CREATE,Kingbase,nam,查询,id
From: https://www.cnblogs.com/kingbase/p/17561136.html

相关文章

  • KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误
    案例说明:在KingbaseESV8R6集群部署了postgis后,执行sys_monitor.shstart启动集群时,出现动态库错误,如下图所示:适用版本:KingbaseESV8R6操作系统:KylinV10Server一、问题分析1、手工执行sys_ctl启动数据库服务,启动正常。2、执行sh-xsys_monitor.shstart查看脚本启动......
  • KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障
    案例说明:KingbaseESV8R6集群,备库作为repo-path节点,建立类型为‘cluster’模式的备份,在执行sys_backup.shinit时,出现“cannotfindprimarynode”故障。故障如下图所示:适用版本:KingbaseESV8R6一、集群及备份配置1、集群节点状态[kingbase@node101bin]$./repmgrclus......
  • KingbaseES V8R3集群运维案例---failover切换故障分析
    案例说明:KingbaseESV8R3集群主库数据库服务重启后,failover切换失败,分析failover失败的具体原因。适用版本:KingbaseESV8R3一、集群架构node13----->主库(primary)node25----->管理备库(standby)node58----->备库(standby)二、故障现象1主2备集群,172.31.*......
  • KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置
    案例说明:通过案例描述KingbaseESV8R3集群异步、同步及全同步强一致性配置,本案例为一主二备的架构。适用版本:KingbaseESV8R3集群架构:集群复制配置参数说明:1)sync_flag[kingbase@node101bin]$cat../etc/HAmodule.conf|grep-isync_#1->synchronouscluster,0->async......
  • Kingbase ES 自定义聚合函数和一次改写案例
    文章概要:KES的SQL的语法暂时不兼容oracle的自定义聚合函数的创建语法和流程,但是可以使用KES已支持的语法改写。本文整理和简单解析了自定义聚合函数的原理和解读了范例代码。并根据客户代码进行了改写。一,oracle自定义聚合函数的简析oracle的自定义聚合函数需要实现4个ODCIAg......
  • kingbaseES sql 优化技巧汇总
    1、整体思路针对业务系统的出现的慢sql我们的优化步骤大概分为以下几步1、识别高负载语句2、收集性能相关的数据3、确定性能问题产生的原因4、实施优化手段下面我们针对这几个步骤展开进行讲解1、识别高负载语句金仓数据库kingbaseES针对满语句识别有以下几个工具•s......
  • kingbaseES 优化之操作系统瓶颈排查
    针对操作系统性能瓶颈的判断和排查是数据库优化工作的一项重要技能,尤其是针对实例整体优化操作系统的性能瓶颈排查无外乎四个方面CPU、内存、磁盘、网络针对这四个方面整理了一些相关心得和大家分享。在判断系统瓶颈之前首先我们要知道操作系统资源的极限值在哪里收集系统信......
  • kingbaseES 优化之数据库瓶颈排查
    针对数据库的性能瓶颈排查方法分为两个层次1、实例级别性能问题排查2、语句级别性能问题排查实例级别实例级别性能问题排查用来分析数据库实例整体是否存在性能瓶颈,然后根据排除出的疑似问题进行实例级别参数的优化。使用场景包括1、压测场景下数据库整体优化2、上线之前数......
  • Kingbase ES 函数返回-return语句
    文章概要:本文在https://www.cnblogs.com/kingbase/p/15703611.html一文的基础上总结了KingbaseES中函数能支持的return语句,整体上兼容oracle的基础上,也和PG语法一样。同时列举了sqlserevr表值函数和代码故障案例。一,关于return语句有5个return语句可以用来从KES函数中返回数......
  • kingbaseES V8R3集群运维案例之---集群部署前后ssh端口修改
    kingbaseESV8R3集群运维案例之---集群部署前后ssh端口修改案例说明:kingbaseESV8R3集群部署读写分离的集群是使用ssh的默认端口(22)部署,当改为非默认端口时,在部署中或部署后会因kingbasecluster脚本ssh的连接而失败,现提出以下解决方案。适用版本:KingbaseESV8R31......