2012-11-22 143 views
0

使用說明:PostgreSQL的:功能

SELECT * FROM information_schema.routines 

SELECT * FROM pg_catalog.pg_proc 

我能得到系統的功能列表。 是否存在獲得描述,甚至更好的分類功能的方法? Like herehere

我不相信,有人用手打字:)

謝謝!

+0

是什麼這個問題? –

+0

如何通過SQL查詢獲取系統函數的描述? – kaa

回答

1

psql外殼,你可以得到類似的信息與

\daS 

                       List of aggregate functions 
    Schema |  Name  |  Result data type  |  Argument data types   |      
------------+----------------+-----------------------------+------------------------------------+---------------------- 
pg_catalog | array_agg  | anyarray     | anyelement       | concatenate aggregate 
pg_catalog | avg   | numeric      | bigint        | the average (arithmet 
pg_catalog | avg   | double precision   | double precision     | the average (arithmet 
.... 

你可以看到什麼psql殼確實通過啓動與-E參數外殼得到這個信息:

********* QUERY ********** 
SELECT n.nspname as "Schema", 
    p.proname AS "Name", 
    pg_catalog.format_type(p.prorettype, NULL) AS "Result data type", 
    CASE WHEN p.pronargs = 0 
    THEN CAST('*' AS pg_catalog.text) 
    ELSE 
    pg_catalog.array_to_string(ARRAY(
     SELECT 
     pg_catalog.format_type(p.proargtypes[s.i], NULL) 
     FROM 
     pg_catalog.generate_series(0, pg_catalog.array_upper(p.proargtypes, 1)) AS s(i) 
    ), ', ') 
    END AS "Argument data types", 
    pg_catalog.obj_description(p.oid, 'pg_proc') as "Description" 
FROM pg_catalog.pg_proc p 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace 
WHERE p.proisagg 
    AND pg_catalog.pg_function_is_visible(p.oid) 
ORDER BY 1, 2, 4; 
************************** 
+0

這是一個很好的解決方案,但我需要通過SQL獲得'描述'...您如何看待 - 這是可能的? – kaa

+0

O甚至是beter - 使用一些SQL Query獲取所有這個表。 – kaa

+0

謝謝!查詢 - 是完美的解決方案!我會研究它以瞭解它是如何工作的。 – kaa