我正在使用以下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数据库中运行此脚本。我还应该做些什么来写一些文件?
答案 0 :(得分:0)
记录为SYS
并执行grant execute on utl_file to system
答案 1 :(得分:0)
您需要向架构授予UTL_FILE特权。
GRANT EXECUTE on UTL_FILE to schema_name