【gp數據庫】查找模式下所有函數名稱(附帶參數信息)

本篇主要目的是查找模式下函數名稱,其中用到自定義類型轉換的方法,爲了將參數拼接起來

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數據庫】查詢函數中引用數據表信息

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章