Masalah pertama adalah mungkin jalurnya tidak ada atau Anda tidak memiliki hak menulis atas direktori.
SQL> select directory_path from all_directories where directory_name = 'YOUR DIRECTORY' ;
Jika Anda tidak memiliki baris, Anda perlu mengatasinya dengan DBA Anda, karena direktori tersebut tidak ada atau Anda tidak memiliki hak istimewa untuk itu. Direktori database adalah kombinasi dari dua elemen:
- Direktori database adalah penunjuk atau referensi ke suatu lokasi di sistem operasi.
- Jalur direktori tersebut harus ada dan pengguna yang menjalankan proses harus memiliki hak baca dan tulis di dalamnya.
Untuk masalah kedua, masalahnya adalah bahwa pengguna yang memiliki prosedur belum diberikan hak istimewa sistem CREATE ANY DIRECTORY. DBA Anda harus memberikan hak istimewa CREATE ANY DIRECTORY atas pengguna Anda, meskipun saya tidak merekomendasikannya. Memberikan hak istimewa APAPUN adalah praktik keamanan yang buruk.
Membuat direktori biasanya merupakan tugas untuk DBA Anda. Saya tidak memperkirakan skenario ketika Anda perlu membuatnya secara dinamis, selama Anda juga harus membuat direktori yang mendasarinya di drive Filesystem ( Linux ) atau Windows, tergantung pada sistem operasi Anda.
Mengingat keadaan khusus Anda, Anda tidak memiliki pilihan dengan ini. Anda perlu mengevaluasi kembali solusinya. Mungkin Anda dapat menggunakan WRITETOCLOB alih-alih WRITETOFILE , lalu menggulung hasilnya di sisi klien Anda dengan sqlplus