Ich habe etwas in dieser Richtung gemacht:
Erstellen Sie ein Oracle-Verzeichnis für das Verzeichnis, das Sie auflisten möchten:
create or replace directory YOURDIR
as '\path\to\your\directory';
Erstellen Sie eine temporäre Tabelle:
create global temporary table DIR_LIST
(
FILENAME VARCHAR2(255),
)
on commit preserve rows;
grant select, insert, update, delete on DIR_LIST to PUBLIC;
Sie benötigen eine gespeicherte Java-Prozedur:
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 };
}
}
}
Und eine aufrufbare PL/SQL-Prozedur zum Aufrufen von java:
CREATE OR REPLACE PROCEDURE get_dir_list(pi_directory IN VARCHAR2)
AS LANGUAGE JAVA
name 'DirList.getList(java.lang.String)';
Wenn Sie schließlich die Prozedur get_dir_list in Ihrem Formular aufrufen, wird die Tabelle mit den Dateien in Ihrem Verzeichnis gefüllt, die Sie dann in Ihren Formularblock einlesen können.
Der Java-Code stammt direkt aus einem Tom-Kyte-Buch (weiß nicht mehr, welches).
BEARBEITEN:
Tatsächlich ist der gesamte Code ziemlich genau aus diesem AskTom-Thread entnommen.