2017-10-24 4 views
0

Ich verwende diese Anweisung in ly-Code, um eine Datei zu erstellen/zu öffnen: erstelle sie, wenn sie noch nicht existiert/öffne sie, wenn sie bereits existiert.UTL_FILE: Konnte keine neue Datei erstellen

w_file_handle := utl_file.fopen ('SAUV_DIR', 
           'sauv_tab_tbrcs_params.txt' , 
           'W') ; 

Die Datei existiert noch nicht, aber sie konnte nicht erstellt werden.

Ich habe diesen Fehler:

SQL> @MyScript.sql 
declare 
* 
ERROR at line 1: 
ORA-29283: invalid file operation 
ORA-06512: at "SYS.UTL_FILE", line 536 
ORA-29283: invalid file operation 
ORA-06512: at line 14 

Irgendwelche Ideen, die Datei zu erstellen, wenn noch nicht vorhanden ist?

Antwort

1

Sie können diesen Code beziehen, um eine Datei in Ihrem Verzeichnis zu erstellen.

Ich habe eine TT.SQL-Datei mit dem folgenden Code erstellt. Ich habe überprüft, dass ich ein Arbeitsverzeichnis "BDUMP" habe.

Verzeichnis Überprüfen:

SQL> SELECT DIRECTORY_NAME , DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'BDUMP'; 

DIRECTORY_NAME     DIRECTORY_PATH 
------------------------------ --------------- 
BDUMP       /home/fil_test/ 

Verzeichnis wechseln Erlaubnis. Standardmäßig hat es nur Lese- und Ausführungsrechte für andere.

terminal$ chmod 777 fil_test 

Block:

DECLARE 
    fHandle UTL_FILE.FILE_TYPE; 
BEGIN 
    fHandle := UTL_FILE.FOPEN ('BDUMP', 'test_file', 'w'); 

    UTL_FILE.PUT (fHandle, 'This is the first line'); 
    UTL_FILE.PUT (fHandle, 'This is the second line'); 
    UTL_FILE.PUT_LINE (fHandle, 'This is the third line'); 

    UTL_FILE.FCLOSE (fHandle); 
EXCEPTION 
    WHEN OTHERS 
    THEN 
     DBMS_OUTPUT.PUT_LINE (
     'Exception: SQLCODE=' || SQLCODE || ' SQLERRM=' || SQLERRM); 
     RAISE; 
END; 
/

Ausführung:

SQL> @tt.sql 

PL/SQL procedure successfully completed. 

und ich sehe die Datei erstellt:

terminal$ ls -lrt test_file* 
-rw-r----- 1 oracle dba   68 Oct 24 14:49 test_file 
+0

ich von ausgeführt 'beginnen Read_Writ_file(); Ende; ' Ich habe den gleichen Fehler: 29283. 00000 -" ungültige Dateioperation " * Ursache: Es wurde versucht, von einer Datei oder einem Verzeichnis zu lesen, das nicht existiert, oder Datei- oder Verzeichniszugriff wurde von verweigert das Betriebssystem. * Aktion: Überprüfen Sie die Datei- und Verzeichniszugriffsrechte für das Dateisystem , und überprüfen Sie beim Lesen, ob die Datei vorhanden ist. –

+0

... Aber erfolgreich ausgeführt, wenn ich die Datei manuell im Verzeichnis erstellen. Ich möchte, dass es von der Anweisung erstellt wird. –

+0

@ O.Sam bedeutet, dass das Verzeichnis in Ihrem Fall nicht existiert. Überprüfen Sie, ob das Verzeichnis existiert. Lesen Sie den aktualisierten Beitrag. Geben Sie auch die Erlaubnis '777' zu Ihrem Verzeichnis – XING

Verwandte Themen