当前位置: 代码迷 >> Oracle管理 >> 存储过程老是出错?该怎么处理
  详细解决方案

存储过程老是出错?该怎么处理

热度:240   发布时间:2016-04-24 06:18:59.0
存储过程老是出错?
C# code
declare     cid   number(20); begin   select a.id into cid   from b_table a where a.mac='911:34:34:34:GG:GG';   if cid >0     then        update 语句;   else      insert 语句;     end if; commit; exceptionwhen others thenrollback;end;

有一个问题,当where条件为真的时候,正确;但是当where条件为假,else就不会走,这是什么情况啊?

------解决方案--------------------
当where条件找不到值的时候,就发生了NO_DATA_FOUND异常.直接rollback了.
解法:select 语句需要改成count计数方式
SQL code
declare     cid   number(20); begin   select count(a.id) into cid   from b_table a where a.mac='911:34:34:34:GG:GG';   if cid >0     then        select a.id into cid   from b_table a where a.mac='911:34:34:34:GG:GG';        update 语句;   else      insert 语句;     end if; commit; exceptionwhen others thenrollback;end;
------解决方案--------------------
把declare去掉。
  相关解决方案