Код:
create or replace procedure readfile (dir in varchar2, fil in varchar2) is
cn varchar2(25);
v_file UTL_FILE.FILE_TYPE;
BEGIN
v_file := UTL_FILE.FOPEN(dir,fil,'r');
LOOP
begin
UTL_FILE.GET_LINE(v_file,cn);
dbms_output.put_line(cn);
exception
WHEN NO_DATA_FOUND THEN EXIT;
end;
end loop;
UTL_FILE.FCLOSE(v_file);
EXCEPTION
WHEN utl_file.invalid_path THEN
raise_application_error(-20000, 'ERROR: Invalid path for file.');
END;
Код:
SQL> create directory TEMP_DIR as '/u/oracle/tmp2';
Directory created.
SQL> select directory_path from dba_directories where directory_name='TEMP_DIR';
DIRECTORY_PATH
--------------------------------------------------------------------------------
/u/oracle/tmp2
SQL> GRANT read, write ON DIRECTORY TEMP_DIR to repadmina;
Grant succeeded.
ENISWEB>>exec repadmina.readfile('TEMP_DIR','111.txt');
111
222
333
444
555
666
777
888
999
000
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.03
Срослось после того как я открыл этот файл
Код:
v_file := UTL_FILE.FOPEN(dir,fil,'w');
UTL_FILE.FCLOSE(v_file);
Грубо говоря, создал файл из oracle. Дело в правах 100%