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