17,140
社区成员




create or replace procedure compile_from_file(dir_in varchar2,file_in in varchar2) authid current_user is
l_file utl_file.file_type;
l_lines Dbms_Sql.varchar2s;
l_cur PLS_INTEGER:=DBMS_SQL.open_cursor;
procedure read_file(lines_out in out Dbms_Sql.varchar2s)
is
begin
l_file:=Utl_File.fopen(dir_in,file_in,'R');
loop
UTL_FILE.get_line(l_file,l_lines(lines_out.count+1));
end loop;
Exception
when NO_DATA_FOUND then
utl_file.fclose(l_file);
end read_file;
begin
read_file(l_lines);
Dbms_Sql.parse(l_cur,
l_lines,
l_lines.first,
l_lines.last,
true,
Dbms_Sql.native);
Dbms_Sql.close_cursor(l_cur);
end compile_from_file;
cnn sys as sysdba
create or replace directory FILENAME as 'D:\TEMP';
grant read on directory FILENAME to system;
conn system
exec compile_from_file('FILENAME','sbsj');
l老是报错:
ORA-29283: 文件操作无效
ORA-06512: 在 "SYS.UTL_FILE", line 475
ORA-29283: 文件操作无效
ORA-06512: 在 "SYSTEM.COMPILE_FROM_FILE", line 10
ORA-06512: 在 "SYSTEM.COMPILE_FROM_FILE", line 21
ORA-06512: 在 line 2