Bom dia pessoal.
Sempre utilizei o comando CASE, porém, como estou utilizando o PG 8.3.1
rodando com ODBC, deparei-me com algo curioso quando o campo em questão
é do formato NUMERIC.
Tenho o seguinte comando:

EXEC SQL
        UPDATE PRODUTO SET PROD_CUSTONOVO = CASE WHEN :PROD_CUSTONOVOW
        = 0 THEN NULL ELSE :PROD_CUSTONOVOW END
        WHERE  PROD_CODIGO    = :PROD_CODIGOW
END-EXEC

ERROR:  invalid input syntax for integer: "+00000018.25"

Quero que, caso o campo a gravar que é o PROD_CUSTONOVOW seja ZERO, que
grave NULL na tabela de PRODUTOS.
O que ocorre é que, como este campo é um NUMERIC(10:2), o comando dá
erro. Não que dê erro usando o PGADMIN, mas dá erro na minha aplicacao
que roda sob ODBC. Peguei o erro quando acionei o LOG do Banco e
percebi que ele coloca ASPAS SIMPLES no campo, ou seja, tratando-o como
se fosse um String.


..........COMANDO QUE O PG RECEBE (PEGO PELO LOG)

UPDATE PRODUTO SET PROD_CUSTONOVO=CASE WHEN '+00000018.25'=0 THEN NULL
ELSE '+00000018.25' END WHERE PROD_CODIGO=3
ERROR:  invalid input syntax for integer: "+00000018.25"

Se este comando CASE é executado com campos CHAR, INT, etc..  não dá erro.
Porém, se o campo é um NUMERIC, dá este erro: ERROR:  invalid input syntax
for integer:

Voces tem algo a comentar sobre este erro?

Muito Obrigado.

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

Responder a