如何避免在`WHEN OTHERS THEN`之后的代码执行?
时间: 2024-09-06 08:06:11 浏览: 75
为了避免在`WHEN OTHERS THEN`之后的代码执行,特别是在期望只对特定异常进行处理的情况下,你可以明确地列出可能遇到的特定异常,并为它们分别设置`WHEN`子句。如果抛出的是你没有预见到的异常,`OTHERS`才会被执行。
例如,在PL/SQL块中:
```sql
BEGIN
-- ...可能抛出异常的业务逻辑...
WHEN DATABASE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('数据库错误,已记录');
WHEN TYPE_MISMATCH THEN
DBMS_OUTPUT.PUT_LINE('数据类型不匹配,已处理');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('没有找到数据');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000, '未知错误:' || SQLERRM, SQLCODE);
END;
/
```
在这个例子中,如果抛出了数据库错误、数据类型错误或没有找到数据,相应的`WHEN`块将执行相应的处理。只有当这些都未捕获时,`WHEN OTHERS THEN`才捕获剩余的未知错误。
相关问题
exception when others then
"exception when others then" 是一种在 PL/SQL 程序中使用的控制结构。它用于捕获和处理在执行 PL/SQL 程序期间发生的未经明确指定的异常。在 "exception when others then" 代码块中,程序员可以编写代码来处理这些异常并确定程序的下一步操作。
PLSQL when others then
PL/SQL (Procedural Language for SQL) 是Oracle数据库管理系统中的一种过程化编程语言,用于编写存储过程、函数和触发器等。当 others 子句与 `when` 关键字一起使用时,它通常出现在 `case` 语句中,表示处理所有未被前面 `when` 子句匹配的情况。
当你有一个 `case` 表达式,`when` 后面跟随具体的条件判断,如果这些条件都不成立,就会执行紧跟 `then` 的部分,即 `when others then` 部分。在这种情况下,`others` 通常会处理 `null` 或者不符合任何特定模式的数据。
例如:
```sql
CASE column_name
WHEN value1 THEN 'Result1'
WHEN value2 THEN 'Result2'
WHEN value3 THEN 'Result3'
ELSE 'Default Result or Exception Handling' -- 当 others 触发时执行这部分
END AS result_column;
```
在这个例子中,如果 `column_name` 的值不是 `value1`, `value2`, 或 `value3`,那么 `else` 后的代码块将被执行。
阅读全文
相关推荐

















