

### 質問

PL/SQLの勉強をしており、PL/SQLからファイルの出力を行うのが目標です。  
ウェブサイトを参考にし下記の例文を実行しましたが、コンパイル時にエラーが表示されてしまいました。  
UTL_FILEのオブジェクト権限やオブジェクトディレクトリの設定など確認し設定したのですが問題の解決には至りませんでした。  
下記の確認した観点のほかに、確認するべき箇所をお教えいただけませんでしょうか。

### 環境

OS ：WindowsServer2016 Standard エディション  
DB ：OracleDatabase 19c Standard エディション（シングル・インスタンス構成）  
実行ユーザ：TEST

### 参考

<https://www.shift-the-oracle.com/plsql/utl_file/create-directory.html>

このような質問を行うのは初めてのため、不足している情報等、教えていただきましたら修正いたします。

### 実行文

[code]

    CREATE OR REPLACE PROCEDURE TEST.TEST_SEND
    AS
        vHandle     UTL_FILE.FILE_TYPE;
        vDirname    VARCHAR2(250);
        vFilename   VARCHAR2(250);
        vOutput     VARCHAR2(32767);
    BEGIN
        vDirname := 'SEND_AREA';
        vFilename := 'test.txt';
        vHandle := UTL_FILE.FOPEN(vDirname ,vFilename,'w', 32767);
     
        vOutput := 'CREATE DIRECTORY 経由でのファイル出力です';
        UTL_FILE.PUT_LINE(vHandle, vOutput);
        UTL_FILE.FCLOSE(vHandle);
    EXCEPTION WHEN OTHERS THEN
        UTL_FILE.FCLOSE_ALL;
        RAISE;
    END;
    /
    
[/code]

### 実行結果

[code]

    警告: プロシージャが作成されましたが、コンパイル・エラーがあります。
    
[/code]

### エラー内容

[code]

    SHOW ERROR
    PROCEDURE TEST.TEST_SENDのエラーです。
    
    LINE/COL ERROR
    -------- ----------------------------------------------------------
    0/0      PL/SQL: Compilation unit analysis terminated
    6/9      PLS-00201: 識別子UTL_FILE.FILE_TYPEを宣言してください。
    
[/code]

### 確認内容1

[code]

    SELECT * FROM ALL_DIRECTORIES WHERE DIRECTORY_NAME = 'SEND_AREA';
    
    OWNER      DIRECTORY_NAME       DIRECTORY_PATH                 ORIGIN_CON_ID
    ---------- -------------------- ------------------------------ --------------------
    SYS        SEND_AREA            c:\oracle\test                 3
    
[/code]

### 確認内容2

[code]

    SELECT * FROM DBA_TAB_PRIVS WHERE TABLE_NAME = 'SEND_AREA';
        
    GRANTEE    OWNER      TABLE_NAME GRANTOR    PRIVILEGE  GRA   HIE   COM   TYPE       INH
    ---------- ---------- ---------- ---------- ---------- ----- ----- ----- ---------- -----
    TEST       SYS        SEND_AREA  SYS        EXECUTE    NO    NO    NO    DIRECTORY  NO
    
[/code]

### 確認内容3

[code]

    SELECT * FROM DBA_TAB_PRIVS WHERE TABLE_NAME = 'UTL_FILE' AND GRANTEE = 'PABLIC';
    
    GRANTEE    OWNER      TABLE_NAME GRANTOR    PRIVILEGE  GRA   HIE   COM   TYPE       INH
    ---------- ---------- ---------- ---------- ---------- ----- ----- ----- ---------- -----
    PUBLIC     SYS        UTL_FILE   SYS        EXECUTE    NO    NO    NO    PACKAGE    NO
    
[/code]


CC BY-SA 4.0
2021-10-11T22:48:26.057
83018
2021-10-12T00:28:43.200
2021-10-12T00:28:43.200
3060
48603
question
oracle plsql
PL/SQLでUTL_FILEパッケージを使用してファイルへの出力するプロシージャを作成する際に"識別子UTL_FILE.FILE_TYPEを宣言してください"とエラーが表示される。