Concatenação no postgresql
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.
A função é comitada sem problema algum. Quando realizo a consulta, retorna o erro
Ex.
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??
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
Curtidas 0
Respostas
Marisiana Battistella
06/06/2014
Neste Select não vai virgula antes da claúsula FROM:
Verifica se não é isso que está gerando o erro...
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
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
06/06/2014
Você testou sem a concatenação para ver se funciona?
GOSTEI 0
Marisiana Battistella
06/06/2014
Tentou utilizar varchar (38) ao invés de character varying(38)?
GOSTEI 0
Ronaldo Lanhellas
06/06/2014
O problema está explícito no erro:
Tente assim
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