Thread: How to describe functions.
I would like to write a single query listing all of the function argument
types. I know that I can write a procedure but I would prefer a single
query. The problem is that in pg_proc, the column proargtypes is of the
type "oidvector", which is another name for an array oid[]. The types
are, of course in pg_type table. The problem here is the array handling.
what I would really like is something like this:
select p.proname,(for($i=0;$i<p.pronargs;$i++ { t.typename where
t.oid=p.proargtypes[$i] }
from pg_proc p, pg_type t;
Of course, I am aware that this is a bad syntax but this pseudocode is
the best way to describe what I want to achieve. The issue is the array
handling.
types. I know that I can write a procedure but I would prefer a single
query. The problem is that in pg_proc, the column proargtypes is of the
type "oidvector", which is another name for an array oid[]. The types
are, of course in pg_type table. The problem here is the array handling.
what I would really like is something like this:
select p.proname,(for($i=0;$i<p.pronargs;$i++ { t.typename where
t.oid=p.proargtypes[$i] }
from pg_proc p, pg_type t;
Of course, I am aware that this is a bad syntax but this pseudocode is
the best way to describe what I want to achieve. The issue is the array
handling.
|
Attachment
Mladen Gogala wrote on 10.12.2009 22:39: > I would like to write a single query listing all of the function argument > types. I know that I can write a procedure but I would prefer a single > query. The problem is that in pg_proc, the column proargtypes is of the > type "oidvector", which is another name for an array oid[]. The types > are, of course in pg_type table. The problem here is the array handling. > what I would really like is something like this: > > select p.proname,(for($i=0;$i<p.pronargs;$i++ { t.typename where > t.oid=p.proargtypes[$i] } > from pg_proc p, pg_type t; > If you are on 8.4 you can use: select proname, pg_catalog.pg_get_function_arguments(oid) from pg_proc ; Thomas