Oracle 在目录中查找文件列表时出现问题
我想检索一个特定文件夹中所有文件的列表,其中包括oracle表单和菜单、报表以及一些txt文件 你知道我如何以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 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用户查看其他网络服务器的权限吗?