Oliver Elphick <[EMAIL PROTECTED]> writes: > I tried to use regclass() in a plpgsql function to derive a tablename > from its oid so as to build a command string, but I am unable to use the > value returned because it cannot be cast to anything. Therefore I will > have to use a complex query on the catalog to do the same work.
Hmm? plpgsql is about as permissive as you can get on this point. Just assign the result to a variable of the desired type, and it will do it if the textual representations are at all compatible. Example: regression=# create function foo(oid) returns text as ' regression'# declare z text; regression'# begin regression'# z := $1::regclass; regression'# return z; regression'# end' language plpgsql; CREATE FUNCTION regression=# select 'pg_proc'::regclass::oid; oid ------ 1255 (1 row) regression=# select foo(1255); foo --------- pg_proc (1 row) > This seems overly restrictive. Would there be a problem in allowing > regclass() to be cast to text? I'm on record that we should allow (explicit) casting to and from text for all types, using the types' I/O functions to implement it. But plpgsql already provides essentially that mechanism in its assignment operations. You just hafta do the explicit assignment... regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend