Concatenação no postgresql

PostgreSQL

06/06/2014

Boa tarde!

Criei uma função que retorna RECORD. Dentro desta função possuo uma concatenação do caractere de vazio com um campo.
Ex.

return query select 
                        field01, 
                        field02, 
                        '  ' || field03 as field03
                   from campo
                   order by field01;


A função é comitada sem problema algum. Quando realizo a consulta, retorna o erro
Ex.
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
DETAIL: Tipo text retornado não corresponde ao tipo character varying(38) esperado na coluna 3.
CONTEXT: PL/pgSQL function fn_sisbusca_grupos() line 17 at RETURN QUERY

********** Error **********
ERRO: structure of query does not match function result type
SQL state: 42804

Já usei CONCAT, também, e tenho o mesmo erro. A concatenação está retornando um tipo de dado "diferente" do esperado. Alguém já passou por situação parecida??
Junior Miranda

Junior Miranda

Curtidas 0

Respostas

Marisiana Battistella

Marisiana Battistella

06/06/2014

Neste Select não vai virgula antes da claúsula FROM:
select field01,  
          field02,
          field03, 
from funcao()
as Tabela(field01  integer, field02  varchar(6), field03 character varying(38))


Verifica se não é isso que está gerando o erro...
GOSTEI 0
Junior Miranda

Junior Miranda

06/06/2014

Obrigado pela atenção! Não, não... a vírgula a mais foi apenas um erro na digitação do post.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

06/06/2014

Você testou sem a concatenação para ver se funciona?
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

06/06/2014

Tentou utilizar varchar (38) ao invés de character varying(38)?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

06/06/2014

O problema está explícito no erro:

 DETAIL: Tipo text retornado não corresponde ao tipo character varying(38) esperado na coluna 3. 


Tente assim

select field01,  
          field02,
          field03, 
from funcao()
as Tabela(field01  integer, field02  varchar(6), field03 text)
GOSTEI 0
POSTAR