Olá a todos.

Ha alguns anos, migrei um sistema legado do MS SQLServer para PostgreSQL.
Esse sistema faz consultas do tipo:

SELECT * FROM organizacional.funcionario WHERE matricula = 989676;

onde matricula é um varchar.

Até a versão 8.1 (que utilizávamos aqui até o mês passado) o SGBD aceitava 
comparações varchar = int, bem como int = varchar.

Depois de atualizarmos para versão 9.0.2 esta consulta passou a dar erro:
Error: ERRO: operador não existe: character varying = integer
SQLState:  42883

Tentei contornar o problema criando os operadores:
CREATE OPERATOR = (PROCEDURE = fn_int8eqvarchar, LEFTARG = int8 , RIGHTARG = 
varchar)
CREATE OPERATOR = (PROCEDURE = fn_varchareqint8, LEFTARG = varchar , RIGHTARG = 
int8)

Mas tive um efeito colateral inadmissível. Comparações varchar = varchar 
passaram a dar erro:
Error: ERRO: sintaxe de entrada é inválida para integer: "P"
SQLState:  22P02

Alguma sugestão?

Marco Aurélio C Feitosa


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

Responder a