Oi Flavio,

Muito obrigado pela sua ajuda. Já estamos planejando refatorar a aplicação
para remover esses erros. Enquanto não alteramos tudo, pensei em fazer uma
function que sobscreva a função replace e dentro dela fazer o CAST.

CREATE OR REPLACE FUNCTION replace2(INTEGER, VARCHAR, VARCHAR) RETURNS text
AS $$
DECLARE
   resultado text;
BEGIN
   resultado := replace(CAST($1 AS text),$2,$3);
   RETURN resultado;
END;

$$ LANGUAGE plpgsql;

Jrjorro

2011/9/27 Flavio Henrique Araque Gurgel <[email protected]>

> > Tenho um sistema legado que faz a bobagem de chamar funções
> "replace(string,
> > string, string)" com replace(INT, string, string) e o postgresql 8.2
> aceita
> > isso de alguma forma. Estou migrando essa base de dados para um
> postgresql
> > 8.4 e ele não executa as querys com esse erro no recebimento do
> parâmetro.
> > Gostaria da ajuda de vocês para saber como fazer o pg 8.4 aceitar essas
> > consultas enquanto estamos buscando refatorar esse "código"
> >
> > ERRO: BRT ERRO: função replace(numeric, unknown, unknown) não existe no
> > caracter 287
> > BRT DICA: Nenhuma função corresponde com o nome e os tipos de argumentos
> > informados. Você precisa adicionar conversões de tipo explícitas.
>
> replace (INT::text, string, string) deve resolver seu problema.
> Se não for possível modificar seu sistema você terá que adicionar as
> conversões no catálogo do PostgreSQL.
> É melhor modificar sua aplicação: não fazer cast corretamente é
> considerado má prática e por isso foi removido no PostgreSQL 8.3 e
> superiores.
>
> []s
> Flavio Gurgel
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



Jrjorro
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a