PLS-00201:使用PLSQL块写入文件时必须声明标识符'UTL_FILE'

时间:2015-04-10 06:39:53

标签: 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 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数据库中运行此脚本。我还应该做些什么来写一些文件?

2 个答案:

答案 0 :(得分:0)

记录为SYS并执行grant execute on utl_file to system

答案 1 :(得分:0)

您需要向架构授予UTL_FILE特权。

GRANT EXECUTE on UTL_FILE to schema_name