d:\lsy\tmp.txt这个文件已经存在了,
用create directory UTL_FILE_DIR as d:\lsy\ 创建了参数DECLARE
tmp VARCHAR(343);
f1 utl_file.file_type;
BEGIN
tmp:='中华人民共和国';
f1:=utl_file.fopen('d:\lsy','tmp.txt','a');
utl_file.put(f1,tmp);
utl_file.fclose(f1);
END;ORA-06510: PL/SQL: 无法处理的用户自定义异常事件
ORA-06512: 在"SYS.UTL_FILE", line 98
ORA-06512: 在"SYS.UTL_FILE", line 157
ORA-06512: 在line 6

解决方案 »

  1.   

    你可以做以下尝试:
    1.在end之前增加exception的处理
    exception 
    when utl_file.INVALID_PATH then
    dbms_output.put_line('Path');
    when utl_file.INVALID_MODE then
    dbms_output.put_line('Mode');
    when utl_file.INVALID_OPERation then
    dbms_output.put_line('Operation');
    when utl_file.INVALID_MaxLineSize then
    dbms_output.put_line('line size');
    when others then
    dbms_output.put_line('Unknown');
    这样可以得出是哪一种错误. 我估计大概是Invalid_path.
    2.有没有进行directory的授权?
    grant read on directory utl_file_dir to public;3.在初始化文件initXXX.ora中是否有utl_file_dir这项?
    没有的话加入
    utl_file_dir=d:\lsy
    或utl_file_dir = *
    试试