Postgresql

如何在 PostgreSQL 中獲取 regprocedure 的函式名?

  • March 21, 2018

我正在嘗試編寫一個函式來獲取與給定regprocedure變數關聯的函式的名稱,如下所示:

CREATE OR REPLACE FUNCTION get_funcname(_fn regprocedure)
 RETURNS text AS
$func$
 SELECT proname::text
 FROM pg_catalog.pg_proc AS p
 JOIN pg_catalog.pg_namespace AS ns
   ON p.pronamespace = ns.oid
 WHERE p.oid = _fn;
$func$  LANGUAGE sql;

我希望得到my_func回報

SELECT get_funcname('my_func(text, variadic text[])');

但是,上面給了我錯誤:

ERROR:  syntax error at or near "variadic"
LINE 1: SELECT get_funcname('my_func(text, variadic text[])');
                               ^
CONTEXT:  invalid type name "variadic text[]"

誰能幫助解釋如何修復函式或語法?

你有

ERROR:  syntax error at or near "variadic"

文件中,

VARIADICparameters 是輸入參數,但會按如下所述進行特殊處理。

VARIADIC這意味著除了為輸入參數指定的參數之外,您不會對參數執行任何特殊操作。在您的情況下,只需放下該令牌,

SELECT get_funcname('my_func(text, text[])');

誰能幫助解釋如何修復函式或語法?

當然。

WHERE p.oid = regexp_replace(_fn, ' VARIADIC ', ' ', 'i');

引用自:https://dba.stackexchange.com/questions/201833