Fórum Concatenação no postgresql #481687

06/06/2014

0

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

Responder

Posts

10/06/2014

Marisiana Battistella

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...
Responder

Gostei + 0

11/06/2014

Junior Miranda

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

Gostei + 0

12/06/2014

Marisiana Battistella

Você testou sem a concatenação para ver se funciona?
Responder

Gostei + 0

12/06/2014

Marisiana Battistella

Tentou utilizar varchar (38) ao invés de character varying(38)?
Responder

Gostei + 0

05/07/2014

Ronaldo Lanhellas

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)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar