Dá para inserir um double em um campo number do Oracle

13 respostas
P

Pessoal estou tentando em um insert (no Oracle) passar um double para ser inserido em um campo number. É possível? Está dando erro e desconfio que o problema seja este.
Testei o insert direto no banco e funciona bem, no Java enrosca.

13 Respostas

ramilani12

Vc pode inserir mas o numero perderá a precisão e ficará como inteiro.

P

Tem alguma forma de inserir preservando as casas decimais? Preciso de 2 casas após a vírgula de precisão.

Veronicaaa

Olá
Isso vai depender de como está configurado o seu campo Number na tabela do banco. Se o campo esta configurado como number(5,2) você tem uma precisão de 5 digitos(total de digitos decimais) e uma escala de 2 digitos(digitos a direita do ponto decimal) ou seja nesse campo você pode colocar o valor 999.99

P

Valeu, vou arrumar o campo aqui para gravar então.
Valeu.

ramilani12

Prq não transformar para float?
Alem do mais vc tera que ajustar sua aplicação imagine um numero 5,2 vc passando para int perderá a precisão tbm.

mister_m

Use BigDecimal ao invés de double.

Veronicaaa

ramilani12:
Prq não transformar para float?
Alem do mais vc tera que ajustar sua aplicação imagine um numero 5,2 vc passando para int perderá a precisão tbm.

Bom o Oracle não tem tipo Float somente Number e a precisão dele varia de 1 a 38 digitos…

ramilani12

Veronicaaa:
ramilani12:
Prq não transformar para float?
Alem do mais vc tera que ajustar sua aplicação imagine um numero 5,2 vc passando para int perderá a precisão tbm.

Bom o Oracle não tem tipo Float somente Number e a precisão dele varia de 1 a 38 digitos…

Como não tem?
Acabei de alterar aqui no Oracle , meu Oracle é 9

Veronicaaa

ramilani12:
Veronicaaa:
ramilani12:
Prq não transformar para float?
Alem do mais vc tera que ajustar sua aplicação imagine um numero 5,2 vc passando para int perderá a precisão tbm.

Bom o Oracle não tem tipo Float somente Number e a precisão dele varia de 1 a 38 digitos…

Como não tem?
Acabei de alterar aqui no Oracle , meu Oracle é 9

Tem mesmo, me confundi! Na verdade sempre utilizei o Number!!

P

Pessoal estive aqui tentando implementar as dicas de vcs e o meu campo está como number (10,2) e preciso adicionar um double nele, porém quando executo o insert ele reporta a seguinte exception:

BatchUpdateException: ORA-01861: o literal não corresponde a string de formato

Mas pelo que vi aqui a precisão está correta. Alguém tem alguma dica?

marciosantri

Estranho ter dado este erro…

ORA-01861: literal does not match format string
Cause: Literals in the input string must be the same length as the literals in the format string, except for the leading white space characters. If the “FX” modifier is specified, the literal must match exactly, including the leading white space.

Action: Correct the format string to match the string literal.

Poste seu código. Talvez ajude o entendimento do pessoal.

marciosantri

Só um outro detalhe: os erros numerados entre 1800 e 1899 são todos referentes à data. Logo, este é um erro nas funções da data e não de números. Talvez isto te ajude.

P

Cara era isso mesmo. O problema estava na data.
Agora está funcionando.
Valeu.

Criado 8 de junho de 2007
Ultima resposta 11 de jun. de 2007
Respostas 13
Participantes 5