Celso Cardoso escreveu:
> 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?
>  


Tente utilizar o cast.
WHEN cast(:PROD_CUSTONOVOW AS NUMERIC(10:2)) = 0 THEN NULL

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a