Обсуждение: function returning a setof a column type

Поиск
Список
Период
Сортировка

function returning a setof a column type

От
Murat Tasan
Дата:
hi all, i'm new to the list, so if this is an off-topic question, or
has already been posed, i apologize...

i'm trying to figure out how to get the following test situation to
work:

creating a function like below fails...

=> CREATE FUNCTION test_function() RETURNS SETOF table.column%TYPE AS
$$ SELECT 1; $$ LANGUAGE SQL;
ERROR:  syntax error at or near "%" at character 59
LINE 1: ...ate function test_function() returns setof table.column%
TYPE as $...

yet i know the %TYPE format works because the below succeeds...

=> CREATE FUNCTION test_function() RETURNS table.column%TYPE AS $$
SELECT 1; $$ LANGUAGE SQL;
NOTICE:  type reference table.column%TYPE converted to integer
CREATE FUNCTION

as does the SETOF option because the following also succeeds...

=> CREATE FUNCTION test_function() RETURNS SETOF int4 AS $$ SELECT 1;
$$ LANGUAGE SQL;
CREATE FUNCTION

can anyone help me figure out how to get the first function
declaration to work?
and yes, i know i could just look up the type of the column of
interest, but i'm trying to make the function somewhat independent of
table alterations (the whole reason for the %TYPE inclusion in
postgresql in the first place!)

thanks for any help!

murat


Re: function returning a setof a column type

От
Tom Lane
Дата:
Murat Tasan <murat.tasan@cwru.edu> writes:
> => CREATE FUNCTION test_function() RETURNS SETOF table.column%TYPE AS
> $$ SELECT 1; $$ LANGUAGE SQL;
> ERROR:  syntax error at or near "%" at character 59

This seems to be an oversight in the grammar: that combination simply
isn't handled.  I'll see about fixing it for 8.2, but for the moment
you're just stuck with not using %TYPE and SETOF together :-(

            regards, tom lane