这是在PROCEDURE执行中产生的异常,请问它对应的异常类型是什么?我想知道。如果知道了,就可以在异常处理里写:EXCEPTION 
      WHEN XXX(异常类型) THEN
      。。

解决方案 »

  1.   

    难道只能写WHEN OTHERS吗?难道ORACLE没有定义具体的异常类型吗?
      

  2.   

    这是 oracle 预定义异常,最近也在用,正好给你,具体如下:CURSOR_ALREADY_OPEN     ORA-6511 试图打开一个已打开的光标
    DUP_VAL_ON_INDEX        ORA-0001 试图破坏一个唯一性限制
    INVALID_CURSOR          ORA-1001 试图使用一个无效的光标
    INVALID_NUMBER          ORA-1722 试图对非数字值进行数字操作
    LOGIN_DENIED ORA-1017 无效的用户名或者口令
    NO_DATA_FOUND ORA-1403 查询未找到数据
    NOT_LOGGED_ON ORA-1012 还未连接就试图数据库操作
    PROGRAM_ERROR ORA-6501 内部错误
    ROWTYPE_MISMATCH ORA-6504 主变量和光标的类型不兼容
    STORAGE_ERROR ORA-6500 内部错误
    TIMEOUT_ON_RESOURCE ORA-0051 发生超时
    TOO_MANY_ROWS ORA-1422 SELECT INTD命令返回的多行
    TRANSACTION_BACKED_OUT ORA-006 由于死锁提交被退回
    VALUE_ERROR ORA-6502 转换或者裁剪错误
    ZERO_DIVIDE ORA-1476 试图被零除