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

Responder a