oracle存储过程 捕获异常




在oracle存储过程中,碰到一个查询不到数据,导致抛出oracle异常的问题,

下面是示例:

v_no varchar2(50);--这是一个用来存储查询出来数据的中间变量
v_sql := 'select fvalue from zy.tparam where fcode = 9999';//这是sql语句
execute immediate v_sql into v_no;--这句报错了,因为查不到数据
if v_no is null then
  resultCode := '4700';
  resultMessage := '自定义的报错信息';
  return;
end if;

...省略...

增加了一个异常捕获机制,让它捕获到这个异常:

v_no varchar2(50);--这是一个用来存储查询出来数据的中间变量
v_sql := 'select fvalue from zy.tparam where fcode = 9999';//这是sql语句
begin
  execute immediate v_sql into v_no;--这句报错了,因为查不到数据
exception--捕获到异常
  when others then
    resultCode := '4700';
    resultMessage := '自定义的报错信息';
    return;--捕获到异常那就直接返回了,或者你可以不返回继续下一步,进行你需要的操作
end;
if v_no is null then
  resultCode := '4700';
  resultMessage := '自定义的报错信息';
  return;
end if;

...省略...

发表评论

    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵