Listar contenido de directorio

Estoy tratando de listar los archivos contenidos en un directorio unix desde oracle y no lo consigo, lo estoy haciendo utilizando PLSQL desde un procedimiento almacenado la version de oracle que utilizo es la 9i trate de usar el paquete dbms_backup_restore. Searchfile pero me da error porque este trabaja con la version 10g en adelante según lo que he investigado, no se si existe algún comando o paquete que liste el contenido del directorio utilizando oracle 9i..
De antemano le(s)

2 respuestas

Respuesta
1
Me temo que en la versión de oracle que utilizas no es posible lo que comentas. Pero haciendo un pequeño procedimiento en JAVA resolverías el problema.
Por cierto, esto lo he sacado de la página de ORACLE, yo de JAVA no sé demasiado.
Lo que oracle dice es que puedes crear una tabla temporal (que al hacer commit borra los datos,) y al ejecutar el procedimiento que te adjunto rellena la tabla con los ficheros del directorio que pasas como parámetro.
Para ello debes primero dar GRANT de ejecución JAVA al propietario del procedure.
GRANT JAVAUSERPRIV to usuario
Crea la tabla temporal de esta forma:
create global temporary table DIR_LIST ( filename varchar2(255) ) on commit delete rows;
El procedimiento en JAVA es:
Create or replace
And compile java source named "DirList" as
import java.io.*;
import java.sql.*;
public class DirList
{
   public static void getList(String directory)
   throws SQLException
  {
    File path = new File( directory );
    String[] list = path.list();
    String element;
    for(int i = 0; i < list.length; i++)
    {
       element = list;
      #sql { INSERT INTO DIR_LIST (FILENAME)
         VALUES (:element) };
    }
  }
}
/

create or replace
procedure get_dir_list( p_directory in varchar2 )
as language java
name 'DirList.getList( java.lang.String )';
 /

Luego eecutas:
exec get_dir_list( '/tmp' );

Y pruebas:

select * from dir_list where rownum < 5;
Filename
------------------------------------------------------
data.dat
.rpc_door
.pcmcia
ps_data

A ver si te va.
Un saludo
Respuesta
1
¿Todavía necesitas la ayuda?
Gracias experto. Pude solucionar el problema utilizando java y no el dbms_backup_restore.searchfile por que esta instrucción es para 10g y en este momento estoy trabajando con 9i.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas