读文件报错的错,求指教

ewevn 2014-10-21 03:03:36

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

...全文
275 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT_LXL 2014-10-21
  • 打赏
  • 举报
回复
引用 6 楼 u011192793 的回复:
跟踪了一下是 Dbms_Sql.parse(l_cur, l_lines, l_lines.first, l_lines.last, true, Dbms_Sql.native); 的问题
读取的字符太长导致报错,你文件里面的字符是不是太长了啊
ewevn 2014-10-21
  • 打赏
  • 举报
回复
跟踪了一下是 Dbms_Sql.parse(l_cur, l_lines, l_lines.first, l_lines.last, true, Dbms_Sql.native); 的问题
CT_LXL 2014-10-21
  • 打赏
  • 举报
回复
引用 4 楼 u011192793 的回复:
这个是你文件中值导致的错误,你必须自己debug找出导致报错的具体记录。 很有可能你的值的长度过长超出了规定范围,只是猜测,自己debug吧
ewevn 2014-10-21
  • 打赏
  • 举报
回复
引用 2 楼 zlloct 的回复:
[quote=引用 1 楼 u011192793 的回复:] 是不是数据库的用户没权限操作windows的文件?怎么做?
. 1. 保证路径和文件名正确。 2. 保证用户有读写权限。 文件读写出错基本都是这个两个原因[/quote] 文件名的问题 但是问题又来了,感觉一头雾水 ORA-06502: PL/SQL: 数字或值错误 ORA-06512: 在 "SYS.DBMS_SYS_SQL", line 1559 ORA-06512: 在 "SYS.DBMS_SYS_SQL", line 1604 ORA-06512: 在 "SYS.DBMS_SQL", line 33 ORA-06512: 在 "SYSTEM.COMPILE_FROM_FILE", line 23 ORA-06512: 在 line 2
wangwei 2014-10-21
  • 打赏
  • 举报
回复
读取的文件要存在,并且文件中有数据,就不报错了 检查sbsj文件是否存在,如果存在文件是否有数据
CT_LXL 2014-10-21
  • 打赏
  • 举报
回复
引用 1 楼 u011192793 的回复:
是不是数据库的用户没权限操作windows的文件?怎么做?
. 1. 保证路径和文件名正确。 2. 保证用户有读写权限。 文件读写出错基本都是这个两个原因
ewevn 2014-10-21
  • 打赏
  • 举报
回复
是不是数据库的用户没权限操作windows的文件?怎么做?

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧