Postgresql
如何在 PostgreSQL 中獲取 regprocedure 的函式名?
我正在嘗試編寫一個函式來獲取與給定
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"
從文件中,
VARIADIC
parameters 是輸入參數,但會按如下所述進行特殊處理。
VARIADIC
這意味著除了為輸入參數指定的參數之外,您不會對參數執行任何特殊操作。在您的情況下,只需放下該令牌,SELECT get_funcname('my_func(text, text[])');
誰能幫助解釋如何修復函式或語法?
當然。
WHERE p.oid = regexp_replace(_fn, ' VARIADIC ', ' ', 'i');