2014-03-05 116 views
0

我想獲取postgresql中存儲過程的參數列表,有沒有任何查詢來獲取參數?如何獲取postgresql中存儲過程的參數列表

我有一個系統過程做相同的,那就是:

SELECT pg_get_function_identity_arguments('funcname'::regproc); 

但這裏的時候,有同名的多個功能那麼它會返回一個錯誤。

任何解決方案?

在此先感謝..

回答

0

對於my tool that reports PostgreSQL schema我使用類似:其結果

SELECT CASE 
     WHEN pg_proc.proretset 
     THEN 'setof ' || pg_catalog.format_type(pg_proc.prorettype, NULL) 
     ELSE pg_catalog.format_type(pg_proc.prorettype, NULL) END, 
    pg_proc.proargtypes, 
    pg_proc.proargnames, 
    pg_proc.prosrc, 
    pg_proc.proallargtypes, 
    pg_proc.proargmodes, 
    pg_language.lanname 
FROM pg_catalog.pg_proc 
    JOIN pg_catalog.pg_namespace ON (pg_proc.pronamespace = pg_namespace.oid) 
    JOIN pg_catalog.pg_language ON (pg_proc.prolang = pg_language.oid) 
WHERE 
    pg_proc.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype 
    AND (pg_proc.proargtypes[0] IS NULL 
     OR pg_proc.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype) 
    AND NOT pg_proc.proisagg 
    AND pg_proc.proname ilike 'MY_FUNCTION_NAME' 
    AND pg_namespace.nspname = 'public' 
    AND pg_catalog.pg_function_is_visible(pg_proc.oid); 

見第2和第3列。

+0

它的值爲:'proargtypes'爲''和'proargnames'爲'' –

+0

您使用什麼工具查看結果?在'psql'和'pgAdmin'中,我看到了一個函數:「1043」;「{nr0}」。有'{nr0}'是唯一參數的名稱,'1043'是類型。然後我選擇'pg_catalog.format_type('1043',NULL)'來查看1043是否意味着「字符變化」。 –

+0

我正在使用'SQuirrel SQL Client'來查詢數據庫。 在我的功能中,有更多不止一個參數傳遞,但在你的只有一個參數,那麼這將有所不同? –

相關問題