没问题,错误本身就是'User-Defined Exception':
SQL> set serveroutput on
SQL> declare
  2    TYPE_O_FILEHANDLE UTL_FILE.FILE_TYPE;
  3  BEGIN
  4    TYPE_O_FILEHANDLE := UTL_FILE.FOPEN('d:\hghg','zta.txt','r');
  5  EXCEPTION
  6      WHEN OTHERS THEN
  7        --sqlerror :=SUBSTR(SQLERRM, 1, 150);
  8        --dbms_output.put_line(sqlerrm);
  9        raise;
 10    END;
 11  /
declare
*
ERROR at line 1:
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at line 9
SQL> set serveroutput on
SQL> declare
  2    TYPE_O_FILEHANDLE UTL_FILE.FILE_TYPE;
  3  BEGIN
  4    TYPE_O_FILEHANDLE := UTL_FILE.FOPEN('d:\hghg','zta.txt','r');
  5  EXCEPTION
  6      WHEN OTHERS THEN
  7        dbms_output.put_line(sqlerrm);
  8        --raise;
  9    END;
 10  /
User-Defined ExceptionPL/SQL procedure successfully completed.

解决方案 »

  1.   

    在utl_file包中包括预定义的EXCEPTION
      

  2.   

    我的那个程序的异常是因为oracle的初始化文件中没有utl_file_dir=d:\hghg路径,oracle只能访问utl_file_dir参数定义的路径。
    你看看的得这个路径E:\SPT_東京\作業内容\PJ0DP310是不是oracle可以访问的路径。
      

  3.   

    我知道utl_file包里的预定义的EXCEPTION,我现在就是想直接用WHEN OTHERS THEN,但又知道具体的错误!
      

  4.   

    谢谢,问题解决了,是ORACLE的环境问题