2014-06-13 19:44 GMT-03:00 Junior Miranda <[email protected]>:

> return query select
>                         field01,
>                         field02,
>                         '  ' || field03 as field03
>                    from campo
>                    order by field01;
>
>
> A função é comitada sem problema algum, mas quando realizo a consulta,
> retorna o erro
> Ex.
> Código:
>
> select field01,
>           field02,
>           field03
> from funcao()
> as Tabela(field01  integer, field02  varchar(6), field03 character
> varying(38))
>
>
> ERRO: structure of query does not match function result type
>

O motivo é porque quando você concatena valores o resultado que você tem é
text ou varchar sem precisão, daí teria que chamar da seguinte forma:

    select field01,
              field02,
              field03
    from funcao()
    as Tabela(field01  integer, field02  varchar(6), field03 text);

De qualquer forma. A não ser que sua função tenha realmente um retorno
dinâmico, eu recomendaria evitar o RETURNS [SETOF] RECORD, e usar RETURNS
TABLE, parâmetros OUT ou tipos definidos. Facilita a vida e evita esse tipo
de problema.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a