匿名用户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,需要手动修改创建脚本。
评论
有用 0
墨值悬赏

