UTL_FILEパッケージを使用してPL/SQLよりテキスト出力したいのですが上手くいきません。
まずsysdbaにて「create directory aaa as 'd:\'」にてディレクトリを作成しました。
次に以下のようにプロシージャを作成しました。
create procedure kan_exp(
fir IN varchar2, filename IN varchar2) is
file UTL_FILE.FILE_TYPE;
CURSOR tk01_kan_c IS
select aaa,bbb
from tableCCC
begin
file := UTL_FILE.FOPEN(dir, filename, 'w');
UTL_FILE.PUT_LINE(file, 'TEST');
UTL_FILE.NEW_LINE(file);
for kanrec in tk01_kan_c loop
UTL_FILE.PUT_LINE(file, 'TEST');
end loop;
END kan_exp;
/
それを以下のように呼び出しましたが、
execute kan_exp('UTL_FILE_DIR', 'aaa.csv');
「ORA-29280:無効なディレクトリパスです。」エラーが発生します。
色々と調べてユーザに権限が必要かと思い、「grant read on directory to User」としましたが、ユーザーまたはロール'User'は存在しませんと出てきます。※もちろんUserは存在します。
なにか足りないものがあるのでしょうか?
ご教示いただけますでしょうか?宜しくお願いします。
No.1ベストアンサー
- 回答日時:
本当にそういうコードなのか、転記ミスなのか良くわからないので
勝手に判断することを許してください。
>まずsysdbaにて「create directory aaa as 'd:\'」にてディレクトリを作成しました。
「sysdbaで」を「sysユーザで」と解釈します。
sysでディレクトリオブジェクトを作って、他のユーザが
そのディレクトリオブジェクトを使ってファイルに書き出す場合、
そのユーザに対しwrite権限が必要になります。
>create procedure kan_exp(
>fir IN varchar2, filename IN varchar2) is
kan_expの第一パラメータ名は「dir」?だとすると
>execute kan_exp('UTL_FILE_DIR', 'aaa.csv');
この第一パラメータの値は'aaa'だと思います。
>「grant read on directory to User」としましたが
オブジェクト名が抜けているようですよ。
grant write on directory aaa to User;
のようになります。
大変申し訳ないです。
転記ミスもありました。
その後パブリックにreadとwrite権限追加できましたが、systemではall_directoriesに入っていることを確認しましたがuserには何も入ってきておりません。それが問題だと思うのですが如何でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Ruby 教えてください 2 2023/01/04 17:50
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
- Ruby pythonエラー 4 2022/11/11 19:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTL_FILEパッケージについて
-
oracleでexpdpを使いデータをex...
-
ファイルへの書き込みができない
-
ORA-01013のエラーについて経験...
-
PL/SQLのコンパイルエラーにつ...
-
PL/SQL PLS-00103エラーについて
-
ACCESS:保存済みのインポート...
-
CASE文のエラーについて
-
ORA-01843: 指定した月が無効で...
-
SQL*Plusで、コマンドの返答を...
-
PL/SQLでログを確認したい。
-
SQL*Plus:SPOOLコマンドでのSQ...
-
HAVING句でのBETWEEN演算子
-
SQL実行結果の出力を見やすくし...
-
「ORA-00907: 右カッコがありま...
-
4GB = 4096MB ではない?
-
MSDE2000SP4のデータベースをMS...
-
Oracleで流したSQLのログを取得...
-
新規表領域の作成について
-
PL/SQLでPLS-00201のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースオブジェクトの考...
-
ORA-29280:無効なディレクトリ...
-
Oracle DataPumpでの移行
-
oracleでexpdpを使いデータをex...
-
ファイルへの書き込みができない
-
UTL_FILEパッケージについて
-
ユーザーへのディレクトリ権限...
-
Oracle10gのUTL_FILEについて
-
Oracle10g DROPした1パーティシ...
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
DOSプロンプトとコマンドプロン...
-
PL/SQLでログを確認したい。
-
PL/SQLのコンパイルエラーにつ...
-
PL/SQL PLS-00103エラーについて
-
「ORA-00907: 右カッコがありま...
-
4GB = 4096MB ではない?
-
Oracleの起動時に、マウントし...
-
PCC-S-02201エラーの対処を教え...
-
はじめまして!
おすすめ情報