2012-11-22 86 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