2010年8月10日火曜日

OracleXE での UTL_FILE パッケージ

XEの場合、権限を付与しておかないと使用できない。

参考はここ


%>sqlplus /NOLOG

SQL> conn / as sysdba
接続されました。
-- PUBLIC (すべてのユーザ)に付与する場合
SQL> grant execute on utl_file to public;

権限付与が成功しました。

-- rivus (rivusユーザ)に付与する場合
SQL> grant execute on utl_file to rivus;

権限付与が成功しました。


再度実行すると、以下の様なエラー

DECLARE
*
ERROR at line 1:
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 33
ORA-06512: at "SYS.UTL_FILE", line 436
ORA-06512: at line 89


よーーーく見てみると、未定義のディレクトリを発見;

f_main := UTL_FILE.FOPEN ('DIR_TEMP', v_file, 'w');


ググってみると、以下のような定義が必要らしい;

create or replace directory DIR_TEMP as '/tmp';


付け加えて実行したら成功!

0 件のコメント: