【gp数据库】查找模式下所有函数名称(附带参数信息)

本文介绍了一种在GP数据库中查询特定模式下函数信息的方法,包括使用自定义类型转换函数oidvector2text处理oidvector类型,以及如何从pg_pro表中提取函数名、参数类型等详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要目的是查找模式下函数名称,其中用到自定义类型转换的方法,为了将参数拼接起来

pg_pro表存储函数信息,其中proargtypes字段表示输入参数类型。这个字段是oidvector类型的,查了好多资料也没找到这是个啥类型,怎么和pg_type.oid做关联。于是还是自定义类型转换吧!

---- 类型转换
CREATE OR REPLACE FUNCTION oidvector2text(i oidvector) RETURNS text AS $$
        BEGIN
                RETURN i;
        END;
$$ LANGUAGE plpgsql;

然后查询anrpt模式下所有者是gpadmin的函数

select aa.proname||'('||string_agg(coalesce(dd.typname,' '),',')||')' --如果没有参数,则给个空格占位
from (select aa.oid,bb.nspname||'.'||aa.proname proname,regexp_split_to_table(oidvector2text(aa.proargtypes),' ') v_type 
		from pg_proc aa,pg_namespace bb,pg_authid cc
		where aa.pronamespace = bb.oid and aa.proowner = cc.oid 
		and bb.nspname = 'anrpt' 
		and cc.rolname = 'gpadmin' 
		) aa
left join pg_type dd -- 数据类型表
on aa.v_type = dd.oid 
group by proname,aa.oid ;-- pg_proc表oid必须带上,防止相同函数名,不同参数的函数将参数合并

查询结果

大功告成! 

上一篇:【gp数据库】查询函数中引用数据表信息

下一篇:【gp数据库】建表语句万能模板

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值