TEXT_IO

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
NetBus
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Seg, 15 Out 2007 11:00 am
Localização: São Paulo

salve galera....

alguém poderia me dizer a onde o oracle esta vendo erro nesta procedure....

Selecionar tudo

PROCEDURE varre_patrimonios IS
filename      VARCHAR2(30); 
Arq           text_io.file_type; 
v_linha       varchar2(10000); 
PATRI_ANTIGO  NUMBER(10);    
PATRI_NOVO    NUMBER(10);    
DAT_TOMB      VARCHAR2(8);   
cod_status    NUMBER(2);     
cod_setor     NUMBER(10);    
cod_unid      NUMBER(10);    
cod_conserv   NUMBER(2);     
sit_patri     VARCHAR2(1);   
cod_mat       NUMBER(10);    
tip_baixa     VARCHAR2(1);   
imprtado      VARCHAR2(1);   
encontrado    VARCHAR2(1);   
resp_matri    NUMBER(10);    
resp          VARCHAR2(100); 
sit_reg       VARCHAR2(15);  

BEGIN

     filename := GET_FILE_NAME(File_Filter=> 'Files (*.txt)|*.txt|'); 
     arq:= Text_IO.Fopen('filename','R'); 
     --Text_IO.Get_Line(arq,v_linha); 
loop
  Text_IO.Get_Line(arq,v_linha); 
BEGIN 
PATRI_ANTIGO := substr(v_linha,1,10);  -- código patrimonio antigo
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 1');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 1');
END;
--
BEGIN
PATRI_NOVO   := substr(v_linha,11,10);  -- código patrimonio atual
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 2');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 2');
END;
--
BEGIN
DAT_TOMB     := substr(v_linha,21,8);   -- data tombamento
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 3');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 3');
END;
--
BEGIN
cod_status   := substr(v_linha,29,2);   -- cod status	
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 4');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 4');
END;          
--
BEGIN
cod_setor    := substr(v_linha,31, 10); -- codigo do setor
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 5');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 5');
END;
--
BEGIN
cod_unid     := substr(v_linha,41, 10); -- codigo da unidade
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD:6');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 6');	
END;
--
BEGIN
cod_conserv  := substr(v_linha,51, 2);  -- codigo conservação
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 7');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 7');
END;
--
BEGIN
sit_patri    := substr(v_linha,53,1);   -- situação patrimonio
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 8');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 8');
END;
--
BEGIN
cod_mat      := substr(v_linha,54, 10); -- codigo material
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 9');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 9');
END;
--
BEGIN
tip_baixa    := NVL(substr(v_linha,64,1),'N');   --codigo tipo baixa
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 10');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 10');
END;
--
BEGIN
imprtado     := substr(v_linha,65, 1);  -- I importado sicop V inventariado N item novo.
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 11');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 11');
END;
--
BEGIN
encontrado   := substr(v_linha,66,1);   --encontrado
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 12');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 12');
END;
--
BEGIN
resp_matri   := substr(v_linha,67,10);  --responsavel matricula.
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 13');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 13');
END;          
--
BEGIN
resp         := substr(v_linha,77,100); --responsavel
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 14');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 14');
END;
--
BEGIN
sit_reg      := substr(v_linha,177,15); --situação registro
EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE ('ARQUIVO NÃO ENCONTRADO COD: 15');
          WHEN OTHERS THEN MESSAGE ('ERRO NA LEITURA COD: 15');
END;

exit;
end loop;
end;

----------------------------------

a porcaria do erro ORA-302000
NetBus
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Seg, 15 Out 2007 11:00 am
Localização: São Paulo

TIREI AS ASPAS DO FILENAME ....E então OUTRO ERRINHO


ORA-01403

Copyright (C) 1995, Oracle Corporation
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Netbus, beleza?

cara, eu rodei esse codigo aqui, sem as aspas no filename e não deu erro nenhum. Sera q esse erro ORA-01403 não esta relacionado a alguma outra parte do seu codigo, acho q e 01403 é erro de no_data_found..

[]'s
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Esse arquivo tem algum conteúdo?
O TEXT_IO gera NO_DATA_FOUND quando o arquivo chegou no fim. É com esse exception que é tratado o FIM do arquivo.
NetBus
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Seg, 15 Out 2007 11:00 am
Localização: São Paulo

fala Tineks beleza cara...
então cara com você não deu erro ....
já sei porque ....
é praga ORACLE aqui....hehehe

Dr_gori

gera este erro quando chegou ao fim ou quando não achou nada????
para mim não era para dar erro nenhum ....
agora coloquei assim e ele continua com o erro: ora - 01403

Selecionar tudo

end loop;
exception when no_data_found then 
	message('Arquivo não Encontrado Ora: 01403');
	when others then 
	message('erro'||'/'||sqlerrm);
end;

vou tentar por o insert para ver o que da!!!
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Nesse script q você mandou tem um exit antes do end loop, isso é só um teste ou tem q ser assim mesmo?
você chegou a ver se ele chega a ler a primeira linha e da erro quando vai pra proxima??

[]s
NetBus
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Seg, 15 Out 2007 11:00 am
Localização: São Paulo

não cara é so teste...
eu fiz asssim

Selecionar tudo

if infile is not null then 
:aviso := 'carregado'
else 
:aviso := 'nulo';
end if;
e ele mestra a mensagem

aviso = carregado ...

então ele esta carregando o arquivo e tambem esta lendo as substrs....
ano consigo entender cara....
NetBus
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Seg, 15 Out 2007 11:00 am
Localização: São Paulo

gente so que é na hora que executo o fmx....compilar ele esta compilando normalmente....
ta dando pau na hora que aperto o botão na tela.
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Netbus,

não sei se pode influenciar nisso q está acontecendo, mas depois de usar o arquivo você não está fechando ele..
tenta colocar ai depois do loop o comando pra fechar ele.

Selecionar tudo

Text_IO.Fclose(arq);
[]'s
Maverick
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qua, 22 Fev 2006 3:17 pm
Localização: RJ
Espero que ajude

Abraços,

Maverick

NetBus,

Tranquilinho ???

Vamos lá:

ORA-1403 No data Found

ORA-302000 (se não me engano, ele não encontrou o arquivo para abrir)

Certifique-se de ter passado o nome corretamente...

Selecionar tudo

declare
       arq:= Text_IO.Fopen(filename,'R'); -- sem aspas
       message(arq);
       message(' '); -- mostrará o nome do arquivo que você abriu
loop
  begin
       Text_IO.Get_Line(arq,v_linha); 

        message(v_linha); -- mostrará o conteúdo da variável v_linha
        message(' ');
  exception
    when no_data_found then
       message('fim de arquivo'); -- ou msgbox se você tiver
       message(' ');
end loop;

Talvez você tenha algum arquivo vazio com nome parecido e esteja abrindo este arquivo vazio....

mude o diretório, coloque o arquivo preenchido em um local onde ele seja o único e teste novamente...

espero ter ajudado
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

quando você esta debugando em qual linha dispara o erro??

talvez ajude a solucionar o problema
Responder
  • Informação
  • Quem está online

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