PL/SQL中IF块的奇数编码风格

tod*_*not 5 sql oracle plsql

在我工作的地方,我看到很多用PL/SQL编写的以下类型的代码,

IF a>b THEN
  NULL;
ELSE
  c:=a*b;
END IF;
Run Code Online (Sandbox Code Playgroud)

我发现这很奇怪,因为C等价物看起来像这样,

if (a>b)
{

}
else
{
  c=a*b;
}
Run Code Online (Sandbox Code Playgroud)

上面那种类型的代码一直被认为是C论坛中的糟糕风格,我知道这些风格是由新手发布的.由于PL/SQL不允许空块并且总是需要NULL语句,这种类型的编码风格是否带来了可读性的任何优点,还是只是一个偏好的问题?FWIW,用上述风格编写PL/SQL的人肯定是一个经验丰富的编码员.与以下相比有什么优势吗?

IF a<=b THEN
  c:=a*b;
END IF;
Run Code Online (Sandbox Code Playgroud)

Mae*_*aep 9

如此看来,a <= b不会若有部分为null,是真实的.这就是为什么这两个陈述是不同的.

在第一种情况下,c = a*b如果a为null 将运行.在第二种情况下,它不会.除非您确定a并且b不是null,否则等效语句将改为:

IF a<=b or (a is null) or (b is null) THEN
  c:=a*b;
END IF;
Run Code Online (Sandbox Code Playgroud)