2017-04-06日记:ORA-01403异常

来源:互联网 发布:hexo 知乎 编辑:程序博客网 时间:2024/06/06 01:29

今天在测试代码过程中,使用mybatis调用oralce的一个存储过程,抛出异常,

提示:(ORA-01403: no data found 错误),定位到存储过程中类似如下的语句:

select 字段名  into  变量 from 表名 where clause

大家肯定都知道这是将查询到的数据复制给变量,之所以出现这个异常是因为根据where条件查询不到任何数据,虽然在sql

中执行没有问题,但是在存储过程中对变量复制,就会抛出这个异常。


解决方法大致有三个:

1.捕获并处理(不推荐)

begin

begin

select  字段 into 变量 ...

Exception

when no_data_found then

变量 :=默认值

end;

end

此方法虽然比较正规,但是如果有多个变量,在不同的select语句中进行赋值,便不能很好的处理

2.使用聚合函数(不推荐)

select  max/min(字段) into 变量 ...

不过你确定这样不会查询出错误的数据?

3.先判断再赋值(推荐)

select count(1) into  v_count ....

if v_count=1 then

select  字段 into 变量...

end if

0 0
原创粉丝点击