17
Ноя
2016

Получить имена всех файлов в папке на PL/SQL (Oracle XE)

Есть папка (локально) С:\LB в которую некто закидывает файлы. Мне необходимо (периодически, через определенное время) получать имена всех этих файлов, и если в этих именах есть то имя, которое мне надо, я цепляю этот файл (.PDF) к определенной записи в таблице.

Пока я работаю над получением списка имен файлов:

create global temporary table DIR_LIST (filename varchar2(255)) 
on commit delete rows;
/

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[i]; 
            #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 )';

БД 11g XE и я не могу развернуть JAVA внутри. Писать внешний JAR-ник не совсем актуально. Я так понимаю нужен шедулер и JOB, но все форумы говорят что на чистом PL/SQL этого (получить имена файлов и превратить их в таблицу) написать нельзя. Ок. Возможно можно развернуть .NET классы внутри БД, обернув в процедуру? Как с классами JAVA. Уверен, кто-то определенно с этим сталкивался. Буду благодарен за подсказки!

Источник: https://ru.stackoverflow.com/questions/592200/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B8%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B2%D1%81%D0%B5%D1%85-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B2-%D0%BF%D0%B0%D0%BF%D0%BA%D0%B5-%D0%BD%D0%B0-pl-sql-oracle-xe

Share

Тебе может это понравится...