+ -
当前位置:首页 → 问答吧 → 程序块中的例外exception怎么结束的?

程序块中的例外exception怎么结束的?

时间:2011-11-07

来源:互联网

SQL code

SQL> declare
  2  v_ename varchar2(10);
  3  begin
  4    select ename into v_ename from emp where empno=7698;
  5    dbms_output.put_line('存在数据');
  6    dbms_output.put_line(v_ename);
  7    exception
  8      when no_data_found then
  9        dbms_output.put_line('不存在数据');
 10    dbms_output.put_line('over');
 11  end;
 12  /
表中存在7698的编号,所以不报异常;打印:dbms_output.put_line('存在数据')和dbms_output.put_line(v_ename);
但是不打印dbms_output.put_line('over');
我只想让他报异常的时候执行dbms_output.put_line('不存在数据')这句话,
dbms_output.put_line('over');在任何情况下都要执行,怎么搞啊?

作者: piaoranxinyu   发布时间: 2011-11-07

SQL code

SQL> declare
  2  v_ename varchar2(10);
  3  begin
  4    select ename into v_ename from emp where empno=7698;
  5    dbms_output.put_line('存在数据');
  6    dbms_output.put_line(v_ename);
       dbms_output.put_line('over');
  7    exception
  8      when no_data_found then
  9        dbms_output.put_line('不存在数据');
-- 10    dbms_output.put_line('over');
 11  end;

作者: xiaobn_cn   发布时间: 2011-11-07

正解
引用 1 楼 xiaobn_cn 的回复:
SQL code

SQL> declare
2 v_ename varchar2(10);
3 begin
4 select ename into v_ename from emp where empno=7698;
5 dbms_output.put_line('存在数据');
6 dbms_output.put_line(v_ename……

作者: nvhaixx   发布时间: 2011-11-07

纠正一下,如果说不论什么情况下都要打印的话,exception中的那打印"over"的语句也得写!
引用 2 楼 nvhaixx 的回复:
正解

引用 1 楼 xiaobn_cn 的回复:
SQL code

SQL> declare
2 v_ename varchar2(10);
3 begin
4 select ename into v_ename from emp where empno=7698;
5 dbms_output.put_line('存在数据');
6 dbms_output.put_line……

作者: nvhaixx   发布时间: 2011-11-07

SQL code
declare
   v_ename varchar2(10);
   begin
     begin
       select ename into v_ename from emp where empno=7698;
       dbms_output.put_line('存在数据');
       dbms_output.put_line(v_ename);
     exception
       when no_data_found then
         dbms_output.put_line('不存在数据');
     end ;
     dbms_output.put_line('over');
   end;
   /

作者: renfengjun   发布时间: 2011-11-07