sql >> Base de Datos >  >> RDS >> Oracle

problema al encontrar la lista de archivos en el directorio

Hice algo en este sentido:

Cree un directorio de Oracle para el directorio que desea enumerar:

create or replace directory YOURDIR
  as '\path\to\your\directory';

Cree una tabla temporal:

create global temporary table DIR_LIST
(
  FILENAME VARCHAR2(255),
)
on commit preserve rows;
grant select, insert, update, delete on DIR_LIST to PUBLIC;

Necesitará un procedimiento almacenado de 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 };
      }
  }

  }

Y un procedimiento invocable PL/SQL para invocar java:

CREATE OR REPLACE PROCEDURE get_dir_list(pi_directory IN VARCHAR2)
AS LANGUAGE JAVA
name 'DirList.getList(java.lang.String)';

Finalmente, llamar al procedimiento get_dir_list dentro de su formulario llenará la tabla con los archivos en su directorio, que luego podrá leer en su bloque de formulario.

El código java salió directamente de un libro de Tom Kyte (no recuerdo cuál).

EDITAR:

En realidad, todo el código se extrajo de este hilo de AskTom.