PL/SQL(ファイル出力)

初期化パラメータ(UTL_FILE)設定

PL/SQLでUTL_FILEを使ったファイル入出力を行う場合、初期化パラメータのUTL_FILE_DIRに出力するディレクトリを設定する (PROCEDURE内の「出力パス」と同一)

事前準備

-- PL/SQLサンプル実行用テーブル
CREATE TABLE T_A (   
     F1        VARCHAR2(20)
   , F2        NUMBER(20,3)
);

-- サンプルデータ
INSERT INTO T_A VALUES ('A',1);
INSERT INTO T_A VALUES ('B',2);

PROCEDURE

/*
 ファイル出力
*/
CREATE OR REPLACE PROCEDURE TEST AS

-------------------
-- データ格納変数
-------------------
W1     VARCHAR2(20);
W2     NUMBER(20,3);
W_OUT  VARCHAR2(50);

--------------
-- TABLE定義
--------------
F1W    T_A.F1%TYPE;
F2W    NUMBER(20,3);

---------------------
-- ファイル出力変数
---------------------
-- 出力パス
DNM    VARCHAR2(200) := 'C:\TEMP';
-- 出力ファイル名
FNM    VARCHAR2(200) := 'TEST.CSV';
-- ファイルハンドル
FNO    UTL_FILE.FILE_TYPE;

-----------------
-- カーソル定義
-----------------
-- カーソル変数のオブジェクト定義
TYPE CU_TYPE IS REF CURSOR;
-- カーソル変数定義
CSR CU_TYPE;

-------------
-- 処理開始
-------------
BEGIN

    -- メッセージ出力
    DBMS_OUTPUT.ENABLE( 1000000 );
    DBMS_OUTPUT.PUT_LINE('--BEGIN--');

    -- ファイルオープン
    FNO := UTL_FILE.FOPEN(DNM, FNM, 'W', 2000);
    
    -- 書込み
    BEGIN
        -- カーソルオープン
        OPEN CSR FOR
            SELECT F1,F2 FROM T_A
            ;
        
        -- データ取得
        LOOP
            FETCH CSR INTO
                 F1W
                ,F2W
                ;

            -- 最終データ確認
            IF CSR%NOTFOUND THEN
                EXIT;
            END IF;

            -- データ格納
            W1 := F1W;
            W2 := F2W;

            -- 出力用データ
            W_OUT := W1 || ',' || W2;
            -- ファイル書き込み
            UTL_FILE.PUT_LINE(FNO, W_OUT);

            -- メッセージ出力
            DBMS_OUTPUT.PUT_LINE(W_OUT);

        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('エラー' || SQLCODE);
    END;

    -- ファイルクローズ
    UTL_FILE.FCLOSE(FNO);

    -- メッセージ出力
    DBMS_OUTPUT.PUT_LINE('--END--');
END;
/
SHOW ERR

Caution

コードが右に長い場合があります。最下の横スクロールバーで確認して下さい。

Information

当ページはJavaScriptを使用しています。ご覧になる際はブラウザのJavaScript機能をONにして下さい。

Page Link

Oracle

▲このページのTopへ

Code > Oracle > PL/SQL(ファイル出力)