1)
DECLARE
total_sales number := 10;
no_revenue BOOLEAN;
BEGIN
IF total_sales <= 0 THEN
no_revenue := TRUE;
ELSE
no_revenue := FALSE;
END IF;
END;
2)
DECLARE
total_sales number := 10;
no_revenue BOOLEAN;
BEGIN
IF total_sales <= 0 THEN
no_revenue := TRUE;
ELSIF total_sales > 0 THEN
no_revenue := FALSE;
END IF;
END;
关于性能以及为什么哪一个更好?
PS。无论total_sales
答案 0 :(得分:3)
在您的特定情况下没有区别 - 两个区块会给您相同的结果。但是,IF
构造是不同的,您应该注意操作数的值以及您在条件中使用的比较运算符,因为第一个else
块的IF
子句将捕获不符合IF
条件的所有内容。在第二个IF
块中,您更具体,只有在两个条件之一为真时才会更改no_revenue
变量的值。
就性能而言,在这种特殊情况下完全摆脱IF
块会更好,并按如下方式重写该逻辑:
no_revenue := (total_sales <= 0);
答案 1 :(得分:0)
我认为#1更快,因为它不必在elseif中找到额外的“total_sales&gt; 0”的结果