Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

A.Aguiar

Erro no formato de numero

Recommended Posts

Olá pessoal.Estou com o seguinte problema: quando tento inserir um numero numa tabela:INSERT INTO TABELA ( NOME, IDADE, ALTURA) VALUES ( 'JOSE', '45', '1.45' )ele da pau, diz que o formato do numero está incorreto, verifiquei e descobri que passando o valor da ALTURA como 1.45 ( sem aspas ) ele funciona, o estranho é que até uns dias atras este select funcionava ( esta num teste do JUnit ).existe algum parametro que possa configurar a inserção dos numeros com aspas, notem que a idade continua com as aspas e não dá problema.Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Amigo,

 

Qual o tipo do campo desta tabela (number, float...)??

Para verificar pode ser dado um DESCRIBE ( DESC ) para verificar o tipo...

 

ex.: DESC tabela;

 

Manda pra comunidade ai para o pessoal ajudar!!

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para números INTEIROS o Oracle aceita ' (ASPAS SIMPLES), porém para números com casas decimais NÃO.

 

Para acabar com o problema, basta retirar as ' (ASPAS) do valor de ALTURA que irá inserir numa boa.

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo já fiz insert com aspas para decimal , creio que o problema está na opção de decimal , o Sistema deve estar com virgula.

A.Aguiar já tentou ?

INSERT INTO TABELA ( NOME, IDADE, ALTURA) 
VALUES ( 'JOSE', '45', '1,45' )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, tentei isso que voce me disse, de passar o numero com virgula e deu certo: também pesquisei e vi que tem um parametro NLS que configura isso

 

NLS_NUMERIC_CHARACTERS
só que o estranho é que na aplicação em java eu testei ele passando o numero com virgula e ele da o mesmo erro.

 

ou seja: Fazer o insert

INSERT INTO TABELA ( NOME, IDADE, ALTURA)VALUES ( 'JOSE', '45', '1,45' )
pelo Oracle SQL Developer da certo mais pela aplicação java da erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui resolver, estou agora setando o atributo NLS_NUMERIC_CHARACTERS para a sessão da aplicação com

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'
o problema naum ocorria no Oracle SQL Developer porque ele já setava este parametro em sua sessão..

 

ah e como eu faço para editar o título do Tópico, para colocar como resolvido?

 

Grato a todos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem sabe qual o motivo que valores númericos serem aceitos com ASPAS (')? Estranho isso... fiz alguns testizinhos e realmente foi o que o MOTTA disse de trocar por vírgula que FUNCIONA! pior que tentei achar algo que falasse sobre o acontecido e nada... Abraços, :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo , no ambiente que fiz isto funcinou com ponto , creio que se deva o opção do decimal (ponto ou vírgula).

 

Descobri por puro acidente, fiz um script para gerar um insert e pus os campos char entre aspas por acidente um de valor ficou com aspas e depois reparei que o script funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz algumas coisinhas aqui e pelo que percebi ele deve aceitar ASPAS conforme o formato do NLS_NUMERIC_CHARACTERS da sua sessão está.

 

SQL*Plus: Release 10.2.0.1.0 - Production on Ter Jan 30 14:36:03 2007Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn rodrigoalmeidaInforme a senha:Conectado.SQL> create table XX (a float, b number(5,2));Tabela criada.SQL> insert into XX values (1.11,22.3);1 linha criada.SQL> insert into XX values ('3.27','32.25');insert into XX values ('3.27','32.25')					   *ERRO na linha 1:ORA-01722: n·mero invßlidoSQL> insert into XX values (3.27,'32.25');insert into XX values (3.27,'32.25')							*ERRO na linha 1:ORA-01722: n·mero invßlidoSQL> alter session set NLS_NUMERIC_CHARACTERS = ',.';SessÒo alterada.SQL> insert into XX values ('3.27','32.25');insert into XX values ('3.27','32.25')					   *ERRO na linha 1:ORA-01722: n·mero invßlidoSQL> insert into XX values (3.27,'32.25');insert into XX values (3.27,'32.25')							*ERRO na linha 1:ORA-01722: n·mero invßlidoSQL> insert into XX values (3.27,32.25);1 linha criada.SQL> insert into XX values (1,11,33,3);insert into XX values (1,11,33,3)			*ERRO na linha 1:ORA-00913: valores demaisSQL> insert into XX values ('11,1','11,1');1 linha criada.SQL>

Tentei de várias maneiras e QUANDO coloquei o formato ',.', ele só aceito os valores entre ASPAS!

 

Isso deve matar qq desenvolvedor!

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.