Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1802895
  • 博文数量: 334
  • 博客积分: 11301
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 10:19
个人简介

路虽弥,不行不至;事虽少,不做不成。

文章分类

全部博文(334)

文章存档

2013年(4)

2012年(19)

2011年(27)

2010年(71)

2009年(45)

2008年(15)

2007年(84)

2006年(69)

分类: Oracle

2007-06-04 10:22:37

下面是两个异常处理存储过程:v_error1和v_error2,v_error1可以触发异常处理,而v_error2则不能处理异常处理。
 
create or replace procedure v_error1(p_username varchar2)
as
v_name varchar2(10);
begin
  select username into v_name from dba_users where upper(username)=upper(p_username);
  dbms_output.put_line(v_name);
  exception
    when others then
   raise_application_error(-20001,'没有要找的记录!');
end;
 
create or replace procedure v_error2(p_username varchar2)
as
v_name varchar2(10);
begin
  select username into v_name from dba_users where upper(username)=upper(p_username);
 
  if v_name is not null then
    dbms_output.put_line(v_name);
  else
    raise_application_error(-20001,'没有要找的记录!');
  end if ;
end;
 
注:如果select语句没有返回数据(v_name为空),按说应该执行raise_application_error(),但结果并不是这样,则是根本没有执行if语句。
 

 
阅读(1653) | 评论(0) | 转发(0) |
0

上一篇:RMAN备份及恢复

下一篇:动态SQL的技巧

给主人留下些什么吧!~~