ストアドプロシージャ(PL/SQL)でファイル操作

ストアドプロシージャ(PL/SQL)でファイル操作

Oracle(PL/SQL)ストアドプロシージャ(PL/SQL)でファイル操作

前回、初めて PL/SQL ネタを書きましたが、今回も引き続き TIPS というほどでもない話です。ストアドプロシージャでファイルを読み込みたいなっと思って調べてみたら UTL_FILE というライブラリがあるみたいです。

この UTL_FILE の GET_LINE() を使うと、ファイルから 1 行ずつデータを読み込んでプログラム上で扱うことができます。ただ、この UTL_FILE.GET_LINE() ですが、読み込む行がなくなると NULL や論理値を返してくれるわけではなく Exception が発生します。

う~ん、WHILE や LOOP などの比較演算子に使いたかったけど、仕方なく EXCEPTION のブロックで NO_DATA_FOUND を受けます。もっといい方法があれば教えて下さい。作ってみた簡単なプログラムです。

そういえば、ループで continue が使えないのもちょっと面倒なところですね。GOTO 使うしかないのか・・・。

[ファイルの読み込み]

外側のブロック(BEGINなどは省略してます)

(変数)
buff VARCHAR2(1000);
fileHandle UTL_FILE.FILE_TYPE;

(処理)
# 3番目のrは入力(w:出力 a:追加出力)
fileHandle = UTL_FILE.FOPEN('ファイルパス', 'ファイル名', 'r');

<<LOOP_FILE>>
LOOP
    BEGIN
        UTL_FILE.GET_LINE(fileHandle, buff);
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            EXIT LOOP_FILE;
    END;

    (読み込み後の処理)
END LOOP;

最終更新日:

関連記事

人気記事

新着情報