Identificar qual linha dispara o erro ORA-01722

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Pessoal, tenho um SQL bem grande de +/- 300 linhas e em alguma linha dispara o erro (executando de dentro do PL/SQL Developer):

Selecionar tudo

ORA-01722: número inválido
Só que não especifica em qual linha fica o erro. Tem como a gente saber isso? está complicado achar o erro sem a linha.
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Caro colega,

Volte ao código e veja onde o cursor está!!

Alé está o erro,

Atenciosamente,
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Já fiz isso, em outros erros o curso aponta para a linha do erro, mas nesse erro em específico não.

Aliás achei bem estranho.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Uma dica (Acho que a solução tem que ser encontrada "na mão" mesmo)...
Retire todas as linhas do seu "select" e vá voltando uma a uma...

qualquer coisa, tamos ai.
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Estou com um problema meio estranho em uma select com union all. A select é como esta abaixo:

Selecionar tudo

select campo1
         campo2
         campo3
from(
 select 0 campo1
          campo2
          0 campo3
 from tabela2
union all
 select campo1
          0  campo2
          0 campo3
 from tabela1
union all
 elect 0  campo1
         0  campo2
         campo3
 from tabela3
)
O fato é que os campos campo1 e campo3 retornam os dados normalmente e o campo2 sempre retorna zero, sendo que se eu executar a select separadamente ela retorna valor. Será que estou fazendo alguma coisa errada no union all?
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Postei a resposta anterior de forma errada!
Desculpem.
tiagovon
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Sex, 31 Out 2008 8:21 pm
Localização: Brasilia - DF
Tiago Von

É o seguinte brother, você simplesmente esta tentando transformar um string em number ...

entra nesse link, é um site que contém todos os erros do oracle ...

http://www.techonthenet.com/oracle/errors/index.php

é bem interessante mesmo ...
margaridi
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 08 Abr 2008 11:09 am
Localização: Curitiba - PR
Contato:
----------------------------
Margaridi, Marco Aurélio
www.margaridi.com

Crie uma variável de debug e atualize ela em vários pontos do programa (por exemplo, nas linhas 50, 100, 150, 200, 250 e 300).
Imprima seu resultado no tratamento do exception.
Se o resultado indicar o número 150 é porque o erro está acontecendo entre a linha 150 e 200.
Você pode ir atualizando a variável em mais pontos dentro deste intervalo, até achar a linha específica.

Selecionar tudo

DECLARE

vDebug     NUMBER(03);

BEGIN

   COMANDO;

vDebug:=1;

   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;

vDebug:=2;

   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;

vDebug:=3;

   COMANDO;
   COMANDO;
   COMANDO;
   COMANDO;

EXCEPTION

   When others then

       dbms_output.put_line('Putz ... deu pau ! ... ' || '[' || to_char(vDebug) || ']', substr(sqlerrm,1,150));
      raise_application_error(-20999,'Putz ... deu pau ! ... ' || '[' || to_char(vDebug) || ']'||substr(sqlerrm,1,150));


END;
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Já tentou ver o erro rodando a query no sql plus?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes