Procedure com erro, mais não fala qual

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
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

Pessoal, eu aqui mais uma vez, criei uma procedure que já funciona em outro cliente, so que no outro banco ela não roda, e não me fala qual erro ela tem

Selecionar tudo

/*SELECT * FROM DCARQUIVO_XML*/

/*drop table DCARQUIVO_XML*/

CREATE OR REPLACE PROCEDURE PROC_LER_ARQ_XML IS

  vCAMINHO   Varchar2(500) := '/u01/backup/EXP_DIR_WINT';
 --- vDIRETORIO Varchar2(100) := 'DIR_HOSHI';
  targetfile BFILE;
  l_clob     CLOB;
  vNUMNOTA   VARCHAR2(20);

  CURSOR C_PEGA_PASTA IS
     SELECT DISTINCT NOME_ARQUIVO FROM DC_ARQ_XML 
   WHERE NOME_ARQUIVO NOT IN ( select  nome_arquivo from DCARQUIVO_XML t  ) 
   AND NOME_ARQUIVO NOT IN ( select  nome_arquivo from AUDIT_TABLE_NOTAS_FALHAS   ) ;
   -- SELECT * FROM DC_ARQ_XML;

BEGIN

/*  EXECUTE IMMEDIATE 'create or replace directory DIR_HOSHI as ''/u01/ftpbi';
  EXECUTE IMMEDIATE 'grant read, write on directory DIR_HOSHI to PUBLIC';*/

  -- captura diretorio real dos arquivos a serem lidos
/*  SELECT D.DIRECTORY_PATH
    INTO vCAMINHO
    FROM DBA_DIRECTORIES D
   WHERE D.DIRECTORY_NAME = vDIRETORIO;*/

  ----chamada da procedure que esta no sys para fazer a leitura dos arquivos no linux
  Begin
    SYS.ler_arq_xml_2(pdirectory => vCAMINHO);
  Exception
    When Others Then
     SYS.ler_arq_xml_2(pdirectory => vCAMINHO);
  End;

  FOR C1 IN C_PEGA_PASTA LOOP
  
    targetfile := BFILENAME(vDIRETORIO, c1.NOME_ARQUIVO);
  
    DBMS_LOB.createtemporary(l_clob, TRUE);
    
    Begin
         DBMS_LOB.fileopen(targetfile, DBMS_LOB.file_readonly);

    
    DBMS_LOB.loadfromfile(l_clob,
                          targetfile,
                          DBMS_LOB.getlength(targetfile));
    DBMS_LOB.fileclose(targetfile);
  
    select extractValue(XMLTYPE.createXML(l_clob),
                        '/nfeProc/NFe/infNFe/ide/nNF',
                        'xmlns="http://www.portalfiscal.inf.br/nfe"') NUMERO_NF
      INTO vNUMNOTA
      from dual;
   
  
  
      INSERT INTO DCARQUIVO_XML
      VALUES
        (XMLTYPE.createXML(l_clob), c1.NOME_ARQUIVO, SYSDATE, vNUMNOTA,l_clob);
         
        COMMIT;
      
   Exception
        When Others Then
         INSERT INTO audit_table_notas_falhas  ( NOME_ARQUIVO)
         VALUES ( c1.NOME_ARQUIVO);
         COMMIT;
    End;    
      
  END LOOP;

END;
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

so consigo ver o erro, aqui, mais não me fala qual, se eu recompilo a procedure ela roda, mais fica assim
Anexos
erro_procedure.jpg
erro_procedure.jpg (15.14 KiB) Exibido 6747 vezes
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia bride,

Uma pergunta, este diretório está registrado nos parameters do banco que você está executando?

Selecionar tudo

select *
from V$PARAMETER
where NAME = 'utl_file_dir';
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

Esse '/u01/backup/EXP_DIR_WINT'; não
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Tenta mudar o para um caminho que existe e faça o teste de novo.

Selecionar tudo

vCAMINHO   Varchar2(500) := '/u01/backup/EXP_DIR_WINT';
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

hum teste esse que já esta cadastrado no banco mais continua '/u01/backup/WINT/logico' ...
Detalhe dentro dessa procedure eu o SYS, isso teria algo a ver ?

Selecionar tudo

 SYS.ler_arq_xml_2(pdirectory => vCAMINHO);
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Provavelmente sim.
No Oracle existem algumas funções que usam o DIRECTORY e outras usam o caminho, UTL_FILE por exemplo.
Você tem algum DBA que possa criar e incluir /u01/backup/EXP_DIR_WINT no seu banco?
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

Era isso mesmo... valeu, pela ajuda. :D
Responder
  • Informação
  • Quem está online

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