SQL> declare
2 v_utl_filehandler UTL_FILE.FILE_TYPE;
3 v_rawfile RAW(32767);
4 v_size NUMBER;
5 v_block NUMBER;
6 v_boolean BOOLEAN;
7 v_file_dir varchar2(100);
8 v_file_name varchar2(100) := '1.txt';
9 begin
10 v_file_dir := 'RPT_DIR';
11 v_utl_filehandler := UTL_FILE.FOPEN(v_file_dir, v_file_name, 'r');
12 UTL_FILE.fgetattr(v_file_dir, v_file_name, v_boolean, v_size, v_block);
13 UTL_FILE.get_raw(v_utl_filehandler, v_rawfile, v_size);
14 UTL_FILE.FCLOSE(v_utl_filehandler);
15 end;
16 /
declare
*
ERROR 位于第 1 行:
ORA-29284: 文件读取错误
ORA-06512: 在 "SYS.UTL_FILE", line 119
ORA-06512: 在 "SYS.UTL_FILE", line 1100
ORA-06512: 在 line 13'RPT_DIR'是建的一个directory,
create or replace directory RPT_DIR
as 'C:\orafile\';该目录下是存在1.txt这个文件的。我不明白的是C:\orafile\1.txt文件是存在的,但oracle还是报
"ORA-29284: 文件读取错误"
2 v_utl_filehandler UTL_FILE.FILE_TYPE;
3 v_rawfile RAW(32767);
4 v_size NUMBER;
5 v_block NUMBER;
6 v_boolean BOOLEAN;
7 v_file_dir varchar2(100);
8 v_file_name varchar2(100) := '1.txt';
9 begin
10 v_file_dir := 'RPT_DIR';
11 v_utl_filehandler := UTL_FILE.FOPEN(v_file_dir, v_file_name, 'r');
12 UTL_FILE.fgetattr(v_file_dir, v_file_name, v_boolean, v_size, v_block);
13 UTL_FILE.get_raw(v_utl_filehandler, v_rawfile, v_size);
14 UTL_FILE.FCLOSE(v_utl_filehandler);
15 end;
16 /
declare
*
ERROR 位于第 1 行:
ORA-29284: 文件读取错误
ORA-06512: 在 "SYS.UTL_FILE", line 119
ORA-06512: 在 "SYS.UTL_FILE", line 1100
ORA-06512: 在 line 13'RPT_DIR'是建的一个directory,
create or replace directory RPT_DIR
as 'C:\orafile\';该目录下是存在1.txt这个文件的。我不明白的是C:\orafile\1.txt文件是存在的,但oracle还是报
"ORA-29284: 文件读取错误"
SQL> edit
已写入 file afiedt.buf 1 declare
2 v_utl_filehandler UTL_FILE.FILE_TYPE;
3 v_rawfile RAW(32767);
4 v_size NUMBER;
5 v_block NUMBER;
6 v_boolean BOOLEAN;
7 v_file_dir varchar2(100);
8 v_file_name varchar2(100) := '1.txt';
9 begin
10 v_file_dir := 'RPT_DIR';
11 v_utl_filehandler := UTL_FILE.FOPEN(v_file_dir, v_file_name, 'r');
12 UTL_FILE.fgetattr(v_file_dir, v_file_name, v_boolean, v_size, v_block);
13 UTL_FILE.get_raw(v_utl_filehandler, v_rawfile, v_size);
14 UTL_FILE.FCLOSE(v_utl_filehandler);
15 dbms_output.put_line(v_size||' '||v_rawfile||' '||v_block);
16* end;
SQL> /
14 6F6E6C7920612074657374200A 0PL/SQL 过程已成功完成。
grant read, write on directory RPT_DIR to user;
f1 := utl_file.fopen(L_Path, P_FileName, 'r',32767);