ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro ORA-01722: Invalid Number (Resolvido)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
aleshy
Profissional
Profissional


Registrado: Terça-Feira, 13 de Março de 2007
Mensagens: 627

MensagemEnviada: Qua Jan 18, 2012 1:40 pm    Assunto: Erro ORA-01722: Invalid Number (Resolvido) Responder com Citação

Pessoal,

Nao estou achando resposta para este erro. Quando faco uma consulta simples na tabela do Oracle tipo: select * from PCNFSAID where DTSAIDA >= sysdate - 100 funciona normalmente.
O problema é que se eu faco a consulta acima na mesma tabela, apenas retornando os campos que quero e pedindo o resultado para DTSAIDA>= sysdate - 100 dá o erro de numero invalido. De -1 a -10 vai. Se eu colocar - 11 ai já da o erro... Alguem sabe o que pode ser?

Segue a consulta original:
Código:
select distinct(PCCLIENT.CODCLI), '2' as TIPOREGISTRO,
PCCLIENT.CODCLI as CODIGOCLIENTE,
PCCLIENT.TIPOFJ as TIPOPESSOA,
to_char(replace(replace(replace(CGCENT, '.', ''), '-', ''), '/', ''), 'FM000000000000000') as CNPJCPF,
substr(PCCLIENT.CLIENTE, 1, 60) as RAZAOSOCIAL, substr(PCCLIENT.FANTASIA, 1, 60) as FANTASIA,
PCNFSAID.CODUSUR as CODIGOVENDEDOR,
substr(PCCLIENT.ENDERCOB, 1, 70) as ENDERECO,
nvl(to_char(replace(replace(PCCLIENT.CEPCOB, '.', ''), '-', ''), 'FM00000000'), '40000000') as CEP,
nvl(to_char(PCCLIENT.CODATV1), '59') as TIPOESTABELECIMENTO,
'00' as QUANTIDADEVISITAS,
nvl(to_char(replace(replace(replace(PCCLIENT.TELCOB, '(', ''), ')', ''), '-', ''), 'FM000000000000000'), '000000000000000') as TELEFONE,
substr(PCCLIENT.EMAIL, 1, 50) as EMAIL,
substr(PCCLIENT.BAIRROCOB, 1, 50) as BAIRRO,
'000' as QUANTIDADECHECKOUTS
from PCCLIENT
inner join PCNFSAID on PCCLIENT.CODCLI = PCNFSAID.CODCLI
where PCNFSAID.DTSAIDA >= sysdate - 100

_________________
Alex Vieira
Desenvolvedor
Salvador - Ba


Editado pela última vez por aleshy em Qui Jan 19, 2012 12:36 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Qua Jan 18, 2012 2:06 pm    Assunto: Re: Erro ORA-01722: Invalid Number Responder com Citação

aleshy escreveu:
Pessoal,

Nao estou achando resposta para este erro. Quando faco uma consulta simples na tabela do Oracle tipo: select * from PCNFSAID where DTSAIDA >= sysdate - 100 funciona normalmente.
O problema é que se eu faco a consulta acima na mesma tabela, apenas retornando os campos que quero e pedindo o resultado para DTSAIDA>= sysdate - 100 dá o erro de numero invalido. De -1 a -10 vai. Se eu colocar - 11 ai já da o erro... Alguem sabe o que pode ser?

Segue a consulta original:
Código:
select distinct(PCCLIENT.CODCLI), '2' as TIPOREGISTRO,
PCCLIENT.CODCLI as CODIGOCLIENTE,
PCCLIENT.TIPOFJ as TIPOPESSOA,
to_char(replace(replace(replace(CGCENT, '.', ''), '-', ''), '/', ''), 'FM000000000000000') as CNPJCPF,
substr(PCCLIENT.CLIENTE, 1, 60) as RAZAOSOCIAL, substr(PCCLIENT.FANTASIA, 1, 60) as FANTASIA,
PCNFSAID.CODUSUR as CODIGOVENDEDOR,
substr(PCCLIENT.ENDERCOB, 1, 70) as ENDERECO,
nvl(to_char(replace(replace(PCCLIENT.CEPCOB, '.', ''), '-', ''), 'FM00000000'), '40000000') as CEP,
nvl(to_char(PCCLIENT.CODATV1), '59') as TIPOESTABELECIMENTO,
'00' as QUANTIDADEVISITAS,
nvl(to_char(replace(replace(replace(PCCLIENT.TELCOB, '(', ''), ')', ''), '-', ''), 'FM000000000000000'), '000000000000000') as TELEFONE,
substr(PCCLIENT.EMAIL, 1, 50) as EMAIL,
substr(PCCLIENT.BAIRROCOB, 1, 50) as BAIRRO,
'000' as QUANTIDADECHECKOUTS
from PCCLIENT
inner join PCNFSAID on PCCLIENT.CODCLI = PCNFSAID.CODCLI
where PCNFSAID.DTSAIDA >= sysdate - 100


Tenta TRUNC(SYSDATE - 100) ou TRUNC(SYSDATE) -100 e vê se resolve. Qual versão do Oracle?
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jan 18, 2012 2:15 pm    Assunto: Responder com Citação

Não tenho experiência com Oracle, mas desconfio que o problema não está no "sysdate - 100" em si.
Desconfio o problema está no conteúdo de um dos campos de algum registro que está sendo retornado somente ao utilizar "sysdate - 11" ou "sysdate - 100", e que não é retornado ao utilizar "sysdate - 10".

Espero que seja útil.

_________________
Assinatura: Imoveis em Suzano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Qua Jan 18, 2012 2:39 pm    Assunto: Responder com Citação

imex escreveu:
Não tenho experiência com Oracle, mas desconfio que o problema não está no "sysdate - 100" em si.
Desconfio o problema está no conteúdo de um dos campos de algum registro que está sendo retornado somente ao utilizar "sysdate - 11" ou "sysdate - 100", e que não é retornado ao utilizar "sysdate - 10".

Espero que seja útil.

_________________
Assinatura: Imoveis em Suzano


Pois é Imex, agora que eu reparei no título ali, realmente, pode ser problema em algum registro em campo numérico, o jeito é ele ir eliminando os campos ali na query até achar o problema...
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
aleshy
Profissional
Profissional


Registrado: Terça-Feira, 13 de Março de 2007
Mensagens: 627

MensagemEnviada: Qua Jan 18, 2012 10:51 pm    Assunto: Responder com Citação

Realmente os colegas tem razao. Nao é o sysdate - 100 que dá o erro e sim o resultado retornado na coluna telefone (nvl(to_char(replace(replace(replace(PCCLIENT.TELCOB, '(', ''), ')', ''), '-', ''), 'FM000000000000000'), '000000000000000') as TELEFONE,
).
O que eu queria entender é porque ele dá erro de número inválido se eu transformo para CHAR e retiro alguns caracteres especiais?
Pelo menos sei que o resultado esta retornando valor nao numerico. Seria por causa do NVL?
_________________
Alex Vieira
Desenvolvedor
Salvador - Ba
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Qua Jan 18, 2012 11:22 pm    Assunto: Responder com Citação

aleshy escreveu:
Realmente os colegas tem razao. Nao é o sysdate - 100 que dá o erro e sim o resultado retornado na coluna telefone (nvl(to_char(replace(replace(replace(PCCLIENT.TELCOB, '(', ''), ')', ''), '-', ''), 'FM000000000000000'), '000000000000000') as TELEFONE,
).
O que eu queria entender é porque ele dá erro de número inválido se eu transformo para CHAR e retiro alguns caracteres especiais?
Pelo menos sei que o resultado esta retornando valor nao numerico. Seria por causa do NVL?


Qual o tipo de dados desse campo(TELCOB) lá no banco? É varchar2?
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
aleshy
Profissional
Profissional


Registrado: Terça-Feira, 13 de Março de 2007
Mensagens: 627

MensagemEnviada: Qui Jan 19, 2012 12:35 pm    Assunto: Responder com Citação

O campo é do tipo varchar(13).
O valor nao deveria ser retornado como não numerico, ja que o campo é do tipo varchar? O maximo que deveria ocorrer com usando o StrReplace é algum caracter nao tratato aparecer. Mas nao seria o caso.
Bom, achado o problema vou dar continuidade ao desenvolvimento, senao vou ficar parado tentando entender e nada sai do lugar.

Abracos ao colegas.
_________________
Alex Vieira
Desenvolvedor
Salvador - Ba
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Qui Jan 19, 2012 1:16 pm    Assunto: Responder com Citação

aleshy escreveu:
Bom, achado o problema vou dar continuidade ao desenvolvimento, senao vou ficar parado tentando entender e nada sai do lugar


Verdade. Valeu meu irmão, aquele abraço!
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB