关于utl_file程序包

[复制链接]
查看11 | 回复7 | 2008-11-14 14:42:19 | 显示全部楼层 |阅读模式
我在学习utl_file程序包时,使用下列代码进行调试
1 declare
2l_file utl_file.file_type;
3 begin
4 l_file:=utl_file.fopen('c:/temp/tmp','debug.txt','w');
5 utl_file.put_line(l_file,'One');
6utl_file.fflush(l_file);
7 utl_file.fclose(l_file);
8 exception
9when others then
10if utl_file.is_open(l_file) then
11utl_file.fclose(l_file);
12dbms_output.put_line('failed');
13 end if;
14 raise;
15*end;
总是无法编绎通过,出现以下错误,
declare
*
ERROR 位于第 1 行:
ORA-06510: PL/SQL: 无法处理的用户自定义异常事件
ORA-06512: 在line 14
希望各路高手指点一下,我已为此郁闷很久了
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
数据库初始化参数中 UTL_FILE_DIR 是否有设置你读写的那个目录?
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
目录要设置成oracle知道的目录。否则就要定义。
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
我已经在init.ora中定义了utl_file_dir的值,以下就是我查询的值
SQL> show parameter utl_file_dir
NAME
TYPEVALUE
------------------------------------ ----------- ----------------
utl_file_dir
stringC:\temp
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
下面的子目录 tmp 设置,你设置 c:/temp 目录可以读写 c:/temp 下的文件, 但是不能读取该目录中子目录下的文件。
你还需设置: c:/temp/tmp
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
你语法错了。
第14行只写个raise是什么意思?
raise是抛自定义异常,如
declare
ex1 exception;
begin
..
raise ex1;
..
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
我定认的异常是when others,所以用raise来处理,这个没有语法错误
回复

使用道具 举报

千问 | 2008-11-14 14:42:19 | 显示全部楼层
我将fopen的第一个参数改为C:\temp就好了
这个参数一定要写成utl_file_dir的值吗?如果是这样,定义这个路径有什么意义呢,又不能用相对路径来访问...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行