Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 在目录中查找文件列表时出现问题_Oracle_Oracleforms - Fatal编程技术网

Oracle 在目录中查找文件列表时出现问题

Oracle 在目录中查找文件列表时出现问题,oracle,oracleforms,Oracle,Oracleforms,我想检索一个特定文件夹中所有文件的列表,其中包括oracle表单和菜单、报表以及一些txt文件 你知道我如何以ORACLE的形式检索这些数据,并将它们自动插入我的数据块吗 我使用oracle form 6.0。我做了以下几点: 为要列出的目录创建Oracle目录: create or replace directory YOURDIR as '\path\to\your\directory'; 构建一个临时表: create global temporary table DIR_LIST

我想检索一个特定文件夹中所有文件的列表,其中包括oracle表单和菜单、报表以及一些txt文件

你知道我如何以ORACLE的形式检索这些数据,并将它们自动插入我的数据块吗


我使用oracle form 6.0。

我做了以下几点:

为要列出的目录创建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 };
      }
  }

  }
$ mkdir /tmp/incoming

$ cat >/tmp/incoming/readdir.sh<<eof
#/bin/bash
cd /tmp/incoming/
/bin/ls -1
eof

# test files
$ for i in {1..5}; do touch /tmp/incoming/invoice_no_$RANDOM.pdf; done
最后,在表单中调用过程get_dir_list将使用目录中的文件填充表,然后可以将这些文件读入表单块

java代码直接来自Tom Kyte的一本书(不记得是哪本)

编辑:


实际上,所有的代码都是从这一点上提出来的。

还有另一种有趣的方法,即使用外部表,无需使用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 };
      }
  }

  }
$ mkdir /tmp/incoming

$ cat >/tmp/incoming/readdir.sh<<eof
#/bin/bash
cd /tmp/incoming/
/bin/ls -1
eof

# test files
$ for i in {1..5}; do touch /tmp/incoming/invoice_no_$RANDOM.pdf; done

此方法与@DCookie的Answare中提到的方法相同。

是否可以在版本6中使用?数据库服务器或客户端上的目录是否已存在?客户端I已用其他方法修复它。谢谢这正是我使用它的地方。一旦你构建了它,你就可以像调用任何其他存储过程一样调用它,它会在temp表中构建目录列表,你的表单可以从该表中进行选择。我有一个主题外的问题,我正在使用solaris服务器,通过上面的代码我们可以看到所有solaris文件夹,我可以知道如何授予solaris用户查看其他网络服务器的权限吗?