sys_guid函数默认返回的是16进制的串的ascii编码,通过修改参数guid_default_return_type=name,可以返回16进制字符串,但修改参数时,会发现参数实际已修改,但没效果。
以上问题是由于修改过程没有运行alter_sys_guid()函数导致的。修改过程如下:
修改参数guid_default_return_type;
重启数据库;
执行 select alter_sys_guid() 。这个实际是重建sys_guid()函数,根据参数guid_default_return_type决定是调用sys_guid_bytea ,还是调用sys_guid_name。
Alter_sys_guid 函数的内容:
begin
select setting into return_type from sys_catalog.sys_settings where name = 'guid_default_return_type';
if lower(return_type) = 'bytea' then
stmt = 'DROP FUNCTION IF EXISTS sys_catalog.sys_guid();
CREATE OR REPLACE INTERNAL FUNCTION sys_catalog.sys_guid() RETURNS BYTEA AS
$$SELECT sys_catalog.sys_guid_bytea()$$ LANGUAGE sql;';
else
stmt = 'DROP FUNCTION IF EXISTS sys_catalog.sys_guid();
CREATE OR REPLACE INTERNAL FUNCTION sys_catalog.sys_guid() RETURNS NAME AS
$$SELECT sys_catalog.sys_guid_name()$$ LANGUAGE sql;';
end if;
end;
Note: 对于R6 版本,没有alter_sys_guid,需要手动修改创建脚本。
金仓R3如何改变sys_guid() 返回值类型
最新推荐文章于 2024-05-16 06:01:24 发布