plsql中异常的传递

原创 2015年07月06日 19:15:36
begin
  declare
    v_name varchar2(2) := 'ABC';
  begin
    dbms_output.put_line(v_name);
  exception
    when others then
      dbms_output.put_line('xxx');
  end;
exception
  when others then
    dbms_output.put_line('rrrrrr'||sqlcode || sqlerrm);

end;

声明区域的异常,直接是传递到了最外层

rrrrrr-6502ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小


在异常中恢复,将异常的处理放到子块中,这样在处理完异常后,可以继续进行下面的语句操作。

declare
  e_duplicate_name exception;
  v_name    emp.ename%type;
  v_newname emp.ename%type := 'smith';
begin
  begin
    select ename into v_name from emp where empno = 123;
    if v_name = v_newname then
      raise e_duplicate_name;
    end if;
  exception
    when e_duplicate_name then
      v_newname = 'jack';
  end;
  insert into emp values (123, v_newname);
exception
  when others then
    dbms_output.put_line(sqlcode || sqlerrm);
end;


获取异常程序的位置,在oracle10g后,有dbms_utility.format_error_backtrace,可以用来跟踪堆栈

 when others then
    dbms_output.put_line(sqlcode || sqlerrm||dbms_utility.format_error_backtrace);
end;



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Oracle PlSql/Form 异常与处理

常用的 EXCEPTION异常及处理、自定义异常和在FROM开发中的异常及处理

Oracle PLSQL Exception异常分类、异常抛出、异常处理、异常传播

一、摘要 在PLSQL程序开发过程中,很重要的部分就是对程序异常的监控和处理,包括如何触发异常,何时进行处理,如何进行处理,是否将程式中的所有异常集中在一起,通过公共异常处理的procedure...

条款十二:了解“抛出一个异常”与“传递一个参数”之间的差异

条款十二:了解“抛出一个异常”与“传递一个参数”之间的差异void fun(widget w); void fun(widget& w); void fun(const widget& w); voi...

More Effective C++----(12)理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异

Item M12:理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异 从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget {...

Jni Byte数组传递异常

JNI jbyteArray jobjectArray Crash pin count is 1024 JNI:pin count on array 0x... ([B) ReleaseByteArr...

【随心笔录】Android N 文件Uri传递,报出FileUriExposedException异常,使用FileProvider

一、问题原因 报出FileUriExposedException异常,官网上搜索,发现在Android N的behavior-changes里面,有一些关于 FileUriExposedExcepti...

JNI数组传递与异常处理

JNI通过JNIEnv提供的操作Java数组的功能。它提供了两个函数:一个是操作java的简单型数组的,另一个是操作对象类型数组的。因为速度的原因,简单类型的数组作为指向本地类型的指针暴露给本地代码。...

More Effective C++之Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异

从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类 // 在这里并不重要 void f1(Widge...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)