Solucionado (ver solução)
Solucionado
(ver solução)
14
respostas

Dúvida no Ex. 6 da Aula 1 - Consultando os dados

Olá amigos!

No meu INSERT sempre dá o seguinte erro:

ORA-01858: foi localizado um caractere não numérico onde se esperava um
numérico

Já identifiquei que o problema está no formato da data que estou utilizando.

Estou em ambiente Windows (10) e utilizando o SQLPlus 11g.

Realizei o teste com a da da no formato 'DDMMAA' e funciona normalmente. Já no formato 'DD-MMM-AAAA' não funciona, apresentando o erro especificado acima.

Por que?

14 respostas

'DD-MON-YYYY'

Oi Samuel, é isso mesmo que o Ênio disse, o formato do mês são as 3 primeiras letras do mesmo, em inglês. Exemplo: 3 de agosto de 2015 é '03-AUG-2015'

É exatamente nesse formato 00-MON-0000 que o erro é gerado. Mas no outro formato que indiquei DDMMAA, funciona.

Boa tarde Samuel, você está utilizando o sqlplus no terminal ou prompt? Ou está utilizando alguma IDE, como o SQL Developer?

Segue um exemplo: INSERT INTO TABELA VALUES (TO_DATE('10-FEV-2012','DD-MON-YYYY'), TO_DATE('FEV-10-2012','MON-dd-YYYY'));

Manda o insert que você está fazendo.

Pelo sqlplus, através do terminal, eu faço:

INSERT INTO TABELA VALUES ('10-FEB-2012');

Primeiramente, obrigado pela atenção de vocês.

@Rômulo, estou utilizando o sqlplus no prompt.

@Ênio, estou seguindo exatamente como na aula. Irei tentar sua sugestão...

Oi Samuel, você pode colocar o comando INSERT inteiro aqui, para eu dar uma olhada?

INSERT INTO COMPRAS (ID, VALOR, DATA, OBSERVACOES, RECEBIDO) VALUES (ID_SEQ.NEXTVAL, 100.0, '12-MAY-2007', 'COMPRAS DE MAIO', '1');

SQL> create table compras (
  2      id number primary key,
  3      valor number,
  4      data date,
  5      observacoes varchar2(30),
  6      recebido char check (recebido in (0,1))
  7  );

Tabela criada.

SQL> create sequence id_seq;

Sequência criada.

SQL> INSERT INTO COMPRAS (ID, VALOR, DATA, OBSERVACOES, RECEBIDO) VALUES (ID_SEQ
.NEXTVAL, 100.0, '12-MAY-2007', 'COMPRAS DE MAIO', '1');
INSERT INTO COMPRAS (ID, VALOR, DATA, OBSERVACOES, RECEBIDO) VALUES (ID_SEQ.NEXT
VAL, 100.0, '12-MAY-2007', 'COMPRAS DE MAIO', '1')

            *
ERRO na linha 1:
ORA-01858: foi localizado um caractere não numérico onde se esperava um
numérico

Então, corrijo para o formato 'DDMMAAA', númérico. E dá certo!

SQL> INSERT INTO COMPRAS (ID, VALOR, DATA, OBSERVACOES, RECEBIDO) VALUES (ID_SEQ
.NEXTVAL, 100.0, '12052007', 'COMPRAS DE MAIO', '1');

1 linha criada.

SQL>

Estou com esse mesmo problema. A data não é inserida conforme o vídeo. Com isso fica impossível modelar a tabela.

Boa noite Samuel, peço que você vá utilizando esse formato de data, estou verificando o motivo desse erro estar acontecendo. Assim como o Welber, eu respondi à sua dúvida no seu tópico.

solução!

Boa tarde Samuel, verifiquei aqui e você e o Welber devem estar com esse erro por causa do padrão da data. No Linux, o Oracle é instalado no padrão americano, mas no Windows ele é instalado no padrão brasileiro, você pode conferir isso rodando o seguinte comando:

show parameter nls_lang;

O erro ocorre pois na data são passadas as 3 primeiras letras do mês em inglês, considerando o padrão americano. No brasileiro devem ser passada as letras em português, ao invés da data ser '10-MAY-2011', será '10-MAI-2011'. Eu disponibilizei no exercício um novo arquivo .sql para o padrão brasileiro, peço que você o baixe e tente importá-lo. Qualquer dúvida é só comentar aqui.

Olá Rômulo!

Testado! Está funcionando legalzinho!

Que bacana que a partir dessa dúvida pudemos contribuir.

Sucesso. E muito obrigado pela atenção.

Abraço ;-)