No pgAdminIII eu crio uma função que retorna várias linhas em uma única coluna chamada identificador usando RETURN TABLE:
CREATE OR REPLACE FUNCTION test(
IN parm1 date,
IN parm2 interval)
RETURNS TABLE(identifier INT)
AS
$BODY$
BEGIN
RETURN QUERY
SELECT 1;
END;
$BODY$
LANGUAGE plpgsql;
Depois que a função é criada, pgAdminIII mostra a função como tendo a seguinte definição:
CREATE OR REPLACE FUNCTION test(IN parm1 date, IN parm2 interval)
RETURNS SETOF integer AS
$BODY$
BEGIN
RETURN QUERY
SELECT 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
Ao executar a função segue a lógica do RETURNS TABLE
. Mas, ao editar a função, ele irá selecionar o arquivo RETURNS SETOF
. Isso fornece uma funcionalidade diferente da função que especifiquei (por exemplo, o nome da coluna retornada não existe mais).
Então, como posso forçar o pgAdminIII a manter o nome da coluna retornada de identifier
? Eu particularmente não me importo se eu o defino como um TABLE
ou SETOF
.