如何从PL / SQL中创建的OS上的物理目录? 我看着CREATE OR REPLACE DIRECTORY
命令,但不这样做。 也不对UTL_FILE
似乎能。
Answer 1:
UTL_FILE
仍然缺乏这种能力-可能是从预缓缴DIRECTORY
对象天,你必须明确定义,你可以在启动参数访问操作系统文件目录,所以没有必要动态反正创建目录。
我认为,要做到这一点最简单的方法是使用Oracle Java存储过程:
File f = new File(dirname);
return (f.mkdir()) ? 1 : 0;
如果你走这条路线,确保您使用dbms_java.grant_permission
授予java.io.FilePermission
到拥有执行代码的用户。
Answer 2:
最后,我没有找到一个简单的解决方案。 采用
select os_command.exec('mkdir /home/oracle/mydir') from dual;
或者干脆
x := os_command.exec('mkdir /home/oracle/mydir');
Answer 3:
我认为,要做到这一点的唯一方法是使用外部程序(C或Java),并把它通过PL / SQL。 PL / SQL本身并不具备创建物理OS目录的手段。
PL / SQL技巧提供了如何创建执行shell命令一个C外部过程中一个很好的例子。 请注意,我不认为这是最好的做法,让这个出于安全原因。
它可以先创建目录,那么你可以使用
create or replace directory myDir as '<path-to-dir>/myDir';
请注意,您需要有CREATE分配给执行命令的用户ANY DIRECTORY权限。 该目录与上面的命令创建后,一定要在指定的目录中其他用户的任何需要的权限。
grant read, write on directory myDir to testUsers;
Answer 4:
我只是检查数据库版本11.2的新文档,而且也仍然没有例行我能找到创建目录。 所以,像其他受访者中,我推荐使用Java或C例程。
文章来源: How can I create a directory on the file system?