2012-03-21 63 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