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
