金仓R3如何改变sys_guid() 返回值类型

栏目归类:人大金仓数据库
发布时间:2024-03-26 18:58:15


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,需要手动修改创建脚本。

文章来源:https://blog.csdn.net/m0_62472715/article/details/135356080
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
Acepe 技术分享站