JotaComm escreveu:
> Olá, Newton
>
> Agora o problema é outro. Este problema é porque o retorno sua função
> é um record correto?
>
> Para resolver este problema você tem que fazer a chamada da função da
> seguinte maneira:
>
> SELECT * FROM nome_da_funcao(parametros)
> AS foo(foo int, nome text));
>
> Supondo que você retorna uma tabela chamada foo com dois campos, sendo
> um do tipo int e outro do tipo text.
>
> Assim você consegue fazer o que você quer.
>
Jota, tudo certo?
Fiz uns testes aqui e gostaria de esclarecer se é possível retornar um
tipo realmente gernérico, sem ter que recriar a função toda hora:
create or replace function retornafoo ()
returns setof record as
$body$
declare
saida record;
begin
for saida in
select 1::integer as foo,
'andre'::text as nome ,
now()::date as hoje
loop
return next saida;
end loop;
end;
$body$
language 'plpgsql';
Dessa maneira consigo retornar os 3 campos definidos :
select * from retornafoo() as (foo int, nome text, hoje date);
Mas como eu poderia retornar, por exemplo, apenas o campo "hoje date()"?
Ou então, se eu quisesse retornar um outro tipo de campo, eu teria que
recriar a função?
select foo from retornafoo() as (foo int);
ERROR: wrong record type supplied in RETURN NEXT
--
[]´s,
André Volpato
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral