默认分类,存储过程
存储过程开发,编写,兼容性函数。

GBase 8s clob数据类型操作函数

GBase 8s clob数据类型操作函数

GBase 8s中clob数据类型的操作一般使用filetoclob,lotofile和locopy函数;

示例如下:

-- 插入文本文件到指定字段中
insert into tabclob(id, clobcol) values (1, filetoclob('/home/gbase/clob.file','client'));
-- 导出clob内容至文件
select lotofile(clobcol,'/home/gbase/clob.file.20220103','client') from tabclob;
-- 复制clob
insert into tabclob2 select 2,locopy(clobcol) from tabclob where id = 1;

阅读全文»

GBase 8s自定义使用hex或者unhex函数

从mysql迁移到GBase 8s数据库时,原有hex(有同名函数,但用法不同)、unhex函数在GBase 8s中不可用,因此需要自己创建相应的函数,可以使用C或者JAVA创建自定义例程,也可以使用存储过程。以下以存储过程方式创建。
hexstr函数实现的功能是:将文本转换成十六进制字符串显示。
unhex函数实现的功能是:将十六进制字符串转换成对应的ASCII可视文本显示。



阅读全文»

GBase 8s存储过程中获取当前时间

GBase 8s数据库中获取当前时间,可以使用current year to second这样方式。
但在存储过程中,如果我们想要获取某一段语句的执行时间长度,需要使用两个变量获取当时时间,如下:

drop procedure if exists proc_datetime;
create procedure proc_datetime() returns varchar(255);
  define dt1 datetime year to second;
  define dt2 datetime year to second;
  let dt1 = current year to second;
  system "sleep 5";
  let dt2 = current year to second;
  return "dt1: " || dt1 || " dt2: " || dt2;
end procedure;

阅读全文»

GBase 8s获取第几周、第几天的函数

Oracle数据库中获取某个日期是当年的第几周、当月的第几周、当年的第几天均可以使用to_char来获取。

to_char(sysdate,'WW');    -- 当年第几周,以01-01 至 01-07为第一周
to_char(sysdate,'W');     -- 当月第几周,以01 至 07为第一周
to_char(sysdate,'DDD');   -- 当年第几天,以01-01 为 001

GBase 8s的to_char尚未实际该功能,因此需要使用自定义函数来实现,具体如下:
当年的第几周

drop function if exists weekofyear(datetime year to second);
-- day of year, first week is 01-01 ~ 01-07
create function weekofyear(p_datetime datetime year to second) returns int with (not variant);
  return trunc(1 + (p_datetime - TRUNC(p_datetime, 'YEAR')) / 7);
end function;

阅读全文»

[GBase 8s 教程]GBase 8s 存储过程中的异常处理

异常捕获:ON EXCEPTION

用ON EXCEPTION 语句捕获一个或一组特定的异常(即错误),用错误号 标识。
ON EXCEPTION 语句与RAISE EXCEPTION 语句一起 提供存储过程语言(SPL)的错误 捕获和恢复机制。
在一个语句块内可以定义多个 ON EXCEPTION 语句。
被捕获的异常可以是系统异常或用户定义的异常。
一旦异常被捕获, 错误状态即被清除。





阅读全文»