2012-03-21 73 views
1

我试图用Oracle UTL_FILE.FOPEN命令创建一个文件,但是我得到这个错误。 有其他选择吗?目录名太长pl/sql

log_file:=UTL_FILE.FOPEN("P:\Documentation\Project Team\SA\CSR_Documentation\SHR-10500",'outputforDeleteStudentGroup.txt', 'W'); 

我不想说创建或替换目录,因为该目录已经存在。

请建议。

感谢, 斯利拉姆

回答

2

CREATE OR REPLACE DIRECTORY不会产生在操作系统级别的目录。它创建一个Oracle目录对象。您希望创建一个指向操作系统级目录的Oracle目录对象。你可能会用老式的方法修改UTL_FILE_DIR初始化参数,包括P:\Documentation\Project Team\SA\CSR_Documentation\SHR-10500并重新启动数据库,但这不是我会推荐的。

UTL_FILE.FOPEN的第一个参数应该是一个字符串,这意味着它应该用单引号括起来而不是双引号。

P:\驱动器存在于数据库服务器的文件系统上吗?或者它是由数据库服务器装入的网络驱动器?或者它是一个可供客户使用的目录?

+0

它在一个网络上,并在我从哪里读我的SQL脚本在相同的地方。嘿,当我给单引号它说无效路径。为什么我无法访问文件和想法? – sriram 2012-03-21 15:37:35

+0

@sriram - 如果路径位于数据库的“UTL_FILE_DIR”参数中,则只能在“UTL_FILE”中使用物理路径而不使用Oracle目录对象。但是'UTL_FILE_DIR'被隐藏,以支持使用Oracle目录对象。我仍不确定您是否在说数据库服务器的文件系统上挂载了'P:\'驱动器,或者它只是客户端挂载的东西。 “UTL_FILE”不能引用客户端文件系统可用的目录,而只能是服务器文件系统的一部分。 – 2012-03-21 15:42:05

+0

@Dave有没有我知道数据库服务器文件系统的位置的命令。客户的意思是什么?对不起,我是oracle的新手。 – sriram 2012-03-21 15:47:08