PLS-00201:当使用PLSQL块写入文件时,必须声明标识符“UTL\U文件”

PLS-00201:当使用PLSQL块写入文件时,必须声明标识符“UTL\U文件”,plsql,oracle-xe,Plsql,Oracle Xe,我正在使用以下PLSQL过程。将一些数据写入文件 SET SERVEROUTPUT ON CREATE OR REPLACE DIRECTORY CTEST AS '/tmpL'; GRANT READ ON DIRECTORY CTEST TO PUBLIC; DECLARE out_File UTL_FILE.FILE_TYPE; CURSOR bulk_cursor IS SELECT * FROM TSUSER.CUSTOMER; TYPE bulk_row_type IS T

我正在使用以下PLSQL过程。将一些数据写入文件

SET SERVEROUTPUT ON
CREATE OR REPLACE DIRECTORY CTEST AS '/tmpL';
GRANT READ ON DIRECTORY CTEST TO PUBLIC;

DECLARE

out_File UTL_FILE.FILE_TYPE; 
CURSOR bulk_cursor IS

SELECT * FROM TSUSER.CUSTOMER;

TYPE bulk_row_type IS TABLE OF bulk_cursor%ROWTYPE INDEX BY PLS_INTEGER;
bulk_row bulk_row_type;

appTypeExists BINARY_INTEGER;

BEGIN
out_File := UTL_FILE.FOPEN(CTEST, 'validation_output.txt' , 'W');
OPEN bulk_cursor;
LOOP
    FETCH bulk_cursor
    BULK COLLECT INTO bulk_row LIMIT 10;

    FOR indx IN 1 .. bulk_row.COUNT
    LOOP

          dbms_output.put_line('Numbers are not in international format');
          UTL_FILE.PUT_LINE(out_file , 'Numbers are not in international format');

    END LOOP;
    COMMIT;
    EXIT WHEN bulk_cursor%NOTFOUND;
  END LOOP;
  CLOSE bulk_cursor;   
  UTL_FILE.FCLOSE(out_file);
END;
/
但我有以下例外

PLS-00201: identifier 'UTL_FILE' must be declared

我作为系统用户在ORACLE XE数据库中运行此脚本。我还应该做些什么才能将某些内容写入文件?

以SYS的身份登录并对系统的utl\u文件执行grant execute

您需要将utl\u文件权限授予架构

GRANT EXECUTE on UTL_FILE to schema_name
顺便说一句,不要忘记在init中设置utl\u文件\u目录。否则,utl\u文件\u目录已被弃用。更好地创建和使用目录对象。