首页 > 解决方案 > 设置除以 0 返回 0

问题描述

我突然想到 PL/SQL 可能有一种更简洁的方式来执行此操作:

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

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

有谁知道更简单/更便宜的方法来做到这一点?我对 PL/SQL 还很陌生,我看到我可以使用异常处理程序,但这似乎跳过了操作。所以我想我可以例外zero_divide,然后做:

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

不过,我担心这并不容易理解。感谢您的任何见解!

标签: oracleplsqldivide-by-zero

解决方案


尝试以下操作:

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

推荐阅读