Oracle
 sql >> база данни >  >> RDS >> Oracle

проблем при намирането на списък с файлове в директорията

Направих нещо по следния начин:

Създайте директория на Oracle за директорията, която искате да изброите:

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

Създайте временна таблица:

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

Ще ви трябва съхранена процедура в 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 };
      }
  }

  }

И PL/SQL извикваема процедура за извикване на java:

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

И накрая, извикването на процедурата get_dir_list във вашия формуляр ще попълни таблицата с файловете във вашата директория, които след това можете да прочетете във вашия блок на формуляр.

Java кодът дойде направо от книга на Том Кайт (не си спомням коя).

РЕДАКТИРАНЕ:

Всъщност целият код е почти вдигнат от тази тема на AskTom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво всъщност използва LISTAGG с ORDER BY NULL като критерии за поръчка?

  2. java.sql.SQLException:- ORA-01000:максималният отворен курсор е превишен

  3. как да създадете таблица в oracle

  4. скаларна подзаявка в израза if Условие в PL/SQL

  5. Как да генерирате INSERT изявления от заявка, когато използвате SQLcl (Oracle)