2016-11-29 3 views
0

Ich versuche, eine Textdatei in Orakel pl sql (10 g) zu schreiben. Ich habe das Verzeichnis erstellt, es ist aber immer noch ungültiger Pfad. unten ist der Code.ungültiger Pfad beim Versuch, die Datei in PL sql schreiben

CREATE DIRECTORY test_dir AS 'c:\'; 
-- CREATE DIRECTORY test_dir AS '/tmp'; 

DECLARE 
    fileHandler UTL_FILE.FILE_TYPE; 
BEGIN 
    fileHandler := UTL_FILE.FOPEN('test_dir', 'test_file.txt', 'W'); 
    UTL_FILE.PUTF(fileHandler, 'Writing TO a file\n'); 
    UTL_FILE.FCLOSE(fileHandler); 
EXCEPTION 
    WHEN utl_file.invalid_path THEN 
    raise_application_error(-20000, 'ERROR: Invalid PATH FOR file.'); 
END; 
/

the following is the error: 
* 
ERROR at line 1: 
ORA-20000: ERROR: Invalid PATH FOR file. 
ORA-06512: at line 9 
+2

Ist die Datenbank auf dem gleichen PC wie das Verzeichnis ausgeführt wird? Ein häufiger Fehler besteht darin, dass Sie versuchen, utl_file auf einem entfernten Datenbankserver abzurufen, um eine Datei auf Ihrem lokalen Desktop zu lesen. –

+0

ja robert ich versuche dieses Skript auf meinem Desktop – bugsbunny

+0

OK, aber läuft die Datenbank tatsächlich auf Ihrem Desktop-PC oder ist sie irgendwo auf einem separaten Datenbankserver? –

Antwort

2

Oracle ist Groß- und Kleinschreibung. Alle Namen in SQL und PL/SQL werden jedoch automatisch in Großbuchstaben konvertiert, sofern sie nicht in Anführungszeichen eingeschlossen sind.

So:

CREATE DIRECTORY test_dir AS 'c:\'; 

tatsächlich ausgeführt als:

CREATE DIRECTORY TEST_DIR AS 'c:\'; 

daher das Verzeichnis, das Sie definiert haben, wird TEST_DIR genannt. Wenn Sie in einer Zeichenfolge darauf verweisen (im Gegensatz zu einem Symbolnamen in SQL oder PL/SQL), müssen Sie 'TEST_DIR' verwenden. 'test_dir' wird nicht funktionieren.

So versuchen:

fileHandler := UTL_FILE.FOPEN('TEST_DIR', 'test_file.txt', 'W'); 
+0

vielen Dank für die Hilfe – bugsbunny