例子:
1.4 处理PL/SQL的异常
1.4.1 PL/SQL的异常
例如:
| DECLARE X NUMBER; BEGIN X:= 'yyyy';--Error Here EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED'); END; |
实现技术:
| EXCEPTION WHEN first_exception THEN … WHEN second_exception THEN … WHEN OTHERS THEN /*THERS异常处理器必须排在最后,它处理所有没有明确列出的异常。*/ … END; |
1.4.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 | 试图被零除 |
1.4.3 自定义异常处理
| 共7页: 上一页 [1] 2 [3] [4] [5] [6] [7] 下一页 | |||
![]() |