PLS-00201:当使用PLSQL块写入文件时,必须声明标识符“UTL\U文件”
我正在使用以下PLSQL过程。将一些数据写入文件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
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目录已被弃用。更好地创建和使用目录对象。