南大通用数据库(Gbase 8s) 创建UDR外部函数

这篇具有很好参考价值的文章主要介绍了南大通用数据库(Gbase 8s) 创建UDR外部函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、在使用 date_format、from_unixtime、to_days、yearweek 函数时,Gbase 8s 数据库不支持,可以使用创建 UDR 外部函数来实现

二、登录命令控制台或者使用 navicat 连接 Gbase 数据库

这里使用 navicat ,点击新增连接选择 PostGreSql 驱动,添加地址、账号、密码
连接数据库后,选中目标库选中目标模式,再点击函数-新增函数执行以下语句即可

注意:这里 选中 public 模式,使用 mss 用户,自行修改函数中对应的内容( 例如:FUNCTION “public”.“date_format”、OWNER TO “mss”)

  1. date_format 函数

    CREATE OR REPLACE FUNCTION "public"."date_format"("ctimestamp" timestamptz, "informate" varchar)
     RETURNS "pg_catalog"."varchar" AS $BODY$
       -- Routine body goes here...
     DECLARE  
           result_current_date varchar;
       BEGIN
    --             IF upper($1) = upper('YYYY-MM-DD') || upper($1) = upper('%Y-%M-%D') THEN
    --                     SELECT to_char(now(),'YYYY-MM-DD') into result_current_date;
    --             END IF;
    --     
    --             
    --             IF upper($1) = upper('%Y-%M-%D %h:%m') || upper($1) = upper('%Y-%M-%D %h:%m') THEN
    --                     SELECT to_char(now(),'YYYY-MM-DD HH:mm') into result_current_date;
    --             END IF;
    --             
    --           IF upper($1) = upper('%Y-%M-%D %h:%m:%s') || upper($1) = upper('%Y-%M-%D %h:%m:%s') THEN
    --                     SELECT to_char(now(),'YYYY-MM-DD HH:mm:ss') into result_current_date;
    --             END IF;
               
               case upper($2)
                   when upper('%Y') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY') into result_current_date;
                   when upper('%Y-%M') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY-MM') into result_current_date;                    
                   when upper('%Y-%M-%D') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY-MM-DD') into result_current_date;
                   when upper('%Y-%M-%D %h') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY-MM-DD HH24') into result_current_date;
                   when upper('%Y-%M-%D %h:%m') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY-MM-DD HH24:MI') into result_current_date;
                   when upper('%Y-%M-%D %h:%m:%s') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'YYYY-MM-DD HH24:MI:ss') into result_current_date;            
                   when upper('%M') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'MM') into result_current_date;                
                   when upper('%M-%D') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'MM-DD') into result_current_date;
                   when upper('%D') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'DD') into result_current_date;
                   when upper('%h') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'HH24') into result_current_date;    
                   when upper('%h:%m') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'HH24:MI') into result_current_date;            
                   when upper('%m') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'MI') into result_current_date;                            
                   when upper('%m:%s') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'MI:ss') into result_current_date;        
                   when upper('%s') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'ss') into result_current_date;                                                                
                   when upper('%h:%m:%s') then
                       SELECT to_char(smalldatetime_to_timestamp($1),'HH24:MI:ss') into result_current_date;            
                                                   
                   else
                       SELECT to_char(smalldatetime_to_timestamp($1),informate) into result_current_date;
               end case;
               
           RETURN result_current_date;
    END$BODY$
     LANGUAGE plpgsql VOLATILE
     COST 100;
    
    ALTER FUNCTION "public"."date_format"("ctimestamp" timestamptz, "informate" varchar) OWNER TO "mss";
    

    查询语句:

    SELECT date_format(now(),'%Y-%M-%D %h:%m:%s');
    
  2. from_unixtime 函数

    CREATE OR REPLACE FUNCTION "public"."from_unixtime"("t" int8)
      RETURNS "pg_catalog"."timestamp" AS $BODY$
      DECLARE  
            result_current_date timestamp;
      BEGIN  
         select TO_TIMESTAMP(t) into result_current_date;
        RETURN result_current_date;
    END; $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
      
    ALTER FUNCTION "public"."from_unixtime"("t" int8) OWNER TO "mss";
    

    查询语句:

    select from_unixtime(1692328679);
    
  3. to_days 函数

    -- 参数 varchar类型
    CREATE OR REPLACE FUNCTION "public"."to_days"("ctimestamp" varchar)
      RETURNS "pg_catalog"."int4" AS $BODY$
        -- Routine body goes here...
      DECLARE  
            result_current_date int4;
        BEGIN
                SELECT TIMESTAMPDIFF(day, '0001-01-01', $1) into result_current_date;
            RETURN result_current_date;
    END$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    
    
    ALTER FUNCTION "public"."to_days"("ctimestamp" varchar) OWNER TO "mss";
    
    -- 参数 timestamptz 类型
    CREATE OR REPLACE FUNCTION "public"."to_days"("ctimestamp" timestamptz)
      RETURNS "pg_catalog"."int4" AS $BODY$
        -- Routine body goes here...
      DECLARE  
            result_current_date int4;
        BEGIN
                SELECT TIMESTAMPDIFF(day, '0001-01-01', $1) into result_current_date;
            RETURN result_current_date;
    END$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    
    
    ALTER FUNCTION "public"."to_days"("ctimestamp" timestamptz) OWNER TO "mss";
    

    查询语句:

    select to_days(now());
    
  4. yearweek 函数

    CREATE OR REPLACE FUNCTION "public"."yearweek"("ctimestamp" timestamptz)
      RETURNS "pg_catalog"."int4" AS $BODY$
        -- Routine body goes here...
      DECLARE  
            week_n int4;
            year_n int4;
        BEGIN
                SELECT to_char(smalldatetime_to_timestamp($1),'YYYY') into year_n;
                SELECT trunc(1 + (smalldatetime_to_timestamp($1) - TRUNC(smalldatetime_to_timestamp($1), 'YEAR')) / 7) into week_n;
            RETURN ((year_n*100)+week_n);
    END$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    
    
    ALTER FUNCTION "public"."yearweek"("ctimestamp" timestamptz) OWNER TO "mss";
    

    查询语句:文章来源地址https://www.toymoban.com/news/detail-662181.html

    select YEARWEEK(now());
    select YEARWEEK('2023-01-03 12');
    

到了这里,关于南大通用数据库(Gbase 8s) 创建UDR外部函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面向海量异构数据分析的GBASE南大通用数据库

    GBaseBI V5是GBASE南大通用公司面向海量异构数据分析,以独特的语义映射和内存计算为基础,以“可视化”展示为重点的一款高性能数据分析平台;具备满足企事业单位对KPI指标监控、数据预测、数据预警、数据汇总和数据可视化展示等需求的能力。 GBaseBI V5整体采用B/S构架,

    2024年01月19日
    浏览(85)
  • GBASE南大通用分析型MPP数据库GBase8a的安全特性(2)

    GBase南大通用自主研发的 GBase 8a MPP Cluster 产品(简称GBase8a)是大数据时代成熟的分析型MPP数据库,具有多样化的平台选择、与时俱进的逻辑架构、海量数据高效存储、海量数据高速加载、海量数据高性能分析、弹性服务器资源伸缩、完善的系统资源管理、多级别的高可用、跨

    2024年01月25日
    浏览(55)
  • GBASE南大通用分析型MPP数据库GBase8a的安全特性(1)

    GBase南大通用自主研发的 GBase 8a MPP Cluster 产品(简称GBase8a)是大数据时代成熟的分析型MPP数据库,具有多样化的平台选择、与时俱进的逻辑架构、海量数据高效存储、海量数据高速加载、海量数据高性能分析、弹性服务器资源伸缩、完善的系统资源管理、多级别的高可用、跨

    2024年01月25日
    浏览(47)
  • 南大通用数据库-Gbase-8a-报错集锦-02-metadata is incomplete on localhost

    名称 值 CPU Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz 操作系统 CentOS Linux release 7.9.2009 (Core) 内存 3G 逻辑核数 2 Gbase8a版本 8.6.2-R43 由于gbase.table_distribution存储了所有引擎为express的表元数据信息,如果此表出现数据损坏,会导致本地调度节点无法获取表信息,在select、drop等操作时,将提

    2024年02月06日
    浏览(45)
  • 南大通用GBase 8c数据库与泛微软件完成互认证 共同搭建统一数字化办公平台

    日前,南大通用分布式交易型数据库GBase 8c与泛微协同商务软件“e-cology” V9.0顺利完成产品兼容性测试,双方产品完全兼容,整体运行稳定,性能卓越。完成适配后,双方将充分发挥在各自领域的专业优势,坚持以客户需求为基础,助力国产化办公平台实现数字化转型,更好

    2024年02月13日
    浏览(45)
  • GBASE南大通用分享,适用于 GBase 8s ESQL/C的Insert 游标

    关闭 Insert 游标  由于 GBase 8s 在 SPL 例程中不支持 Insert 游标,本节有关 Insert 游标的讨论仅适用于 GBase 8s ESQL/C。在 SPL 例程中,只能执行 DECLARE 语句定义的 Select 或 Function 游标的 CLOSE 语句。(SPL 的 FOREACH 语句在其语句块中包含 INSERT 语句可以声明功能类似 Insert 游标的 direc

    2024年01月20日
    浏览(43)
  • GBASE南大通用 GCDW&阿里云计算巢:自动化部署云原生数据仓库

    目前,GBASE南大通用已与阿里云计算巢合作,双方融合各自技术优势,助力企业用户实现云上数据仓库的自动化部署,让用户在云端获取数据仓库服务“更简单”,让用户在云端使用数据仓库服务“更便捷”,满足企业用户对高效便捷、自动化部署、高性价比的云原生数据仓

    2024年02月03日
    浏览(46)
  • GBASE南大通用GBase 8a 安装部署

    ssh root@192.168.7.71 ssh root@192.168.7.72 ssh root@192.168.7.73 systemctl status firewalld.service systemctl stop firewalld systemctl disable firewalld sestatus 若系统提示以下信息说明 selinux 已被禁用 未被禁用的话,需要修改配置文件/etc/selinux/config 将SELINUX参数设置为  disabled ,即 SELINUX=disabled 保存退出后,

    2024年02月01日
    浏览(47)
  • GBASE南大通用GBaseCommandBuilder 类

    自动生成单表命令,当使用 GBASE南大通用DataSet 对象的方法将变更的内容写回到对应数据库时,需使用GBASE南大通用 GBaseCommandBuilder 进行协调关联。无法继承此类。 对于该类所有成员的列表,参考 GBaseCommandBuilder 成员。 一、继承层次 System.Object |__ System.MarshalByRefObject |__ Syste

    2024年01月19日
    浏览(44)
  • GBASE南大通用-Command 属性

    GBASE南大通用CommandText 属性 获取或者设置要在数据源中执行的 SQL 语句,默认是空字符串。  语法 [Visual Basic] Public Overrides Property CommandText As String Get Set [C#] GBASE南大通用public override string CommandText { get; set; }  实现 IDbCommand.CommandText  注释 当 CommandType 属性设置为 StoredProc

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包