将0除以返回0

问题描述 投票:1回答:3

在我看来,PL / SQL可能具有更简洁的方法:

我有一个程序可以发生被零除的情况,但是在所有情况下,我都希望它返回0。我当前的逻辑如下:

if bar <> 0 then
    foobar := foo/bar;
else
    foobar := 0;
end if;

有人知道这样做的更简单/更便宜的方法吗?我是PL / SQL的新手,我看到可以使用异常处理程序,但这似乎跳过了该操作。因此,我认为我可以为zero_divide设置一个例外,然后执行:

foobar := 0;
foobar := foo/bar;

不过,我担心这样做不太容易。感谢您的见解!

oracle plsql divide-by-zero
3个回答
0
投票

使用CASE

foobar = case when bar = 0 then 0
              else foo/bar
         end;

0
投票

尝试以下操作:

declare
  foo    integer := 1;
  bar    integer := 0;
  foobar integer;
begin
  foobar := case bar when 0 then 0 else foo/bar end;
  dbms_output.put_line(foobar);  
end;

输出:

0

0
投票

您也可以用exception处理。

BEGIN
   foobar := foo/bar;
EXCEPTION 
   WHEN ZERO_DIVIDE THEN
      foobar := 0;
END;
/

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.