1

在下面的两个代码块中,我使用 WHEN NO_DATA_FOUND THEN,否则使用哪个代码会更有效。

if outrowcount = 1 then     
  update Extable set CLIENT_COUNT = outCliCount where cname='xxx';  
  outretvalue := 0;
END IF;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
     outretvalue := -1;

或者

if outrowcount = 1 then     
   update Extable set CLIENT_COUNT = outCliCount where cname='xxx';  
   outretvalue := 0;  
 else
   outretvalue := -1;
4

1 回答 1

4

UPDATE 语句从不抛出 NO_DATA_FOUND 异常。它只设置隐式 SQL 游标状态,例如,您可以使用 SQL%ROWCOUNT 进行检查。所以你的样本是

update Extable set CLIENT_COUNT = outCliCount where cname='xxx'; 
if SQL%ROWCOUNT = 0 then
  outretvalue := -1;
else
  outretvalue := 0;
end if;
于 2012-11-07T07:14:15.897 回答