On Sun, Aug 15, 2010 at 3:10 AM, Craig Ringer <craig@xxxxxxxxxxxxxxxxxxxxx> wrote:
On 15/08/10 18:00, zhong ming wu wrote:
> Thanks for any better solution to this
CREATE TYPE
However, you still have to have a special type around just for that
function, and you have to *maintain* it to ensure it always matches the
types/columns of the input tables.
I frequently wish for type inference in PL/PgSQL functions returning
query results, so Pg could essentially create and destroy a type along
with the function, allowing you to reference columns in the functions
results without having to use RETURNS RECORD and all that AS
(column-list) pain.
Of course, I don't want it badly enough to put my time where my mouth is
and try to code it ;-) . I'm not whining about the current situation,
just thinking about ways it could improve further.
How about just using OUT parameters?
CREATE FUNCTION FOO(IN _id uuid, OUT col1 text, OUT col2 text)
RETURNS SETOF record AS
BEGIN
select col1, col2 from test where id=_id;
END;
Then your output just has to match the signature of the OUT parameters. And you don't need to define anything when you call it.
Mike