Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

problema em encontrar lista de arquivos no diretório


Fiz algo nesse sentido:

Crie um diretório Oracle para o diretório que deseja listar:
create or replace directory YOURDIR
  as '\path\to\your\directory';

Crie uma tabela temporária:
create global temporary table DIR_LIST
(
  FILENAME VARCHAR2(255),
)
on commit preserve rows;
grant select, insert, update, delete on DIR_LIST to PUBLIC;

Você precisará de um procedimento armazenado java:
create or replace and compile java source named dirlist as
import java.io.*;
  import java.sql.*;
  import java.text.*;

  public class DirList
  {
  public static void getList(String directory)
                     throws SQLException
  {
      File dir = new File( directory );
      File[] files = dir.listFiles();
      File theFile;

      for(int i = 0; i < files.length; i++)
      {
          theFile = files[i];
          #sql { INSERT INTO DIR_LIST (FILENAME)
                 VALUES (:theName };
      }
  }

  }

E um procedimento que pode ser chamado PL/SQL para invocar o java:
CREATE OR REPLACE PROCEDURE get_dir_list(pi_directory IN VARCHAR2)
AS LANGUAGE JAVA
name 'DirList.getList(java.lang.String)';

Finalmente, chamar o procedimento get_dir_list dentro de seu formulário preencherá a tabela com os arquivos em seu diretório, que você poderá ler em seu bloco de formulário.

O código java veio direto de um livro de Tom Kyte (não me lembro qual).

EDITAR:

Na verdade, todo o código é praticamente retirado deste tópico do AskTom.