PL/SQL异常处理报错:自定义异常未被处理,求排查原因
PL/SQL异常未处理问题分析
你的代码核心问题是语法格式错误,导致自定义异常的处理分支未被PL/SQL引擎正确识别:
- 在
EXCEPTION块中,RAISE my_exception;语句后未换行,直接衔接WHEN my_exception THEN,使得这部分代码被解析为不完整语句,WHEN my_exception分支并未被纳入异常处理逻辑。当NO_DATA_FOUND触发后,你抛出了my_exception,但无对应处理分支,因此出现"未处理用户定义异常"的错误。
修正后的代码
DECLARE my_exception EXCEPTION; result1 VARCHAR2(50); result2 NUMBER; BEGIN SELECT brand, year INTO result1, result2 FROM cars WHERE car_id=200; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE my_exception; WHEN my_exception THEN DBMS_OUTPUT.PUT_LINE('Exception has been thrown'); END; /
简化优化方案
如果仅需捕获无匹配行异常并输出提示,无需额外自定义异常,可简化代码:
DECLARE result1 VARCHAR2(50); result2 NUMBER; BEGIN SELECT brand, year INTO result1, result2 FROM cars WHERE car_id=200; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('未找到匹配的记录'); END; /
内容的提问来源于stack exchange,提问作者Mr.Cheese
相关产品推荐
相关产品推荐

