Oracle CREATE DIRECTORYでディレクトリオブジェクトを使用

PL/SQLでUTL_FILE()なんかを使う場合に便利なディレクトリオブジェクト

CREATE DIRECTORY オブジェクト名 AS '/path/to/foo/bar';
GRANT READ ON DIRECTORY オブジェクト名 TO ユーザ名;
GRANT WRITE ON DIRECTORY オブジェクト名 TO ユーザ名;

こうしておくと「オブジェクト名」でアクセスできる。

CREATE OR REPLACE PROCEDURE FOO_BAR
AS
    vHandle     UTL_FILE.FILE_TYPE;
BEGIN
    vHandle := UTL_FILE.FOPEN('オブジェクト名(大文字)', 'foo.txt', 'a');
        ....
END;
/

大文字ってのがミソ。

参考は以下。

Oracleでディレクトリ・オブジェクトの作成・削除・確認
UTL_FILEの使い方 (CREATE DIRECTORY 編)