大家好。 我是PL/SQL和Oracle數據庫的新手。 我需要讀取/寫入服務器上存在的文件,所以我使用的是utl_file.fopen('/home/tmp/','text.txt','R')
,但Oracle顯示錯誤「無效的目錄路徑」。utl_file.fopen沒有'創建目錄...爲...'
主要問題是,我只有用戶的權限,所以我不能使用的命令等create directory user_dir as '/home/temp/'
或查看UTL_FILE_DIR只需show parameter utl_file_dir;
我用這個代碼,以查看UTL_FILE_DIR:
SQL> set serveroutput on;
SQL> Declare
2 Intval number;
3 Strval varchar2 (500);
4 Begin
5 If (dbms_utility.get_parameter_value('utl_file_dir', intval,strval)=0)
6 Then dbms_output.put_line('value ='||intval);
7 Else dbms_output.put_line('value = '||strval);
8 End if;
9 End;
10/
和輸出是「值= 0 」。
我google'd很多,但沒有找到任何解決方案,所以我在這裏尋求幫助。
讀取文件我用這個代碼:
declare
f utl_file.file_type;
s varchar2(200);
begin
f := utl_file.fopen('/home/tmp/','text.txt','R');
loop
utl_file.get_line(f,s);
dbms_output.put_line(s);
end loop;
exception
when NO_DATA_FOUND then
utl_file.fclose(f);
end;
謝謝你的回答,但我怎樣才能讀取pl sql文件?我可以在shell中使用mkdir和cat命令,但不能使用sqlplus創建目錄。 –
@AlexeevMichael - 如果您想從PL/SQL中讀取文件(請記住,只能訪問數據庫服務器的文件系統上的文件),則需要授予適當的權限。有人(你的DBA也許)實際上需要創建目錄對象並授予你對它的訪問權限。事實上,您的操作系統帳戶有權創建操作系統目錄並不直接相關(儘管如果您想要從您的DBA請求CREATE DIRECTORY特權,您可以使用它)。 –
非常感謝您的回答 –