PL/SQL每日一题:含有NULL的IF条件

本文通过四个不同的PL/SQL代码示例详细解析了在Oracle数据库中如何正确使用条件判断语句。特别是针对变量未初始化时的情况进行了深入探讨,帮助读者理解NULL值处理及其对逻辑判断的影响。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
(A)    
DECLARE
   l_total   NUMBER;    
   l_name    VARCHAR2 (10) := 'PL/SQL';    
BEGIN
   IF l_name = 'PL/SQL' OR l_total > 100    
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');    
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');    
   END IF;    
END;    
/    
          
(B)    
DECLARE
   l_total   NUMBER;    
   l_name    VARCHAR2 (10) := 'PL/SQL';    
BEGIN
   IF l_total > 100    
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');    
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');    
   END IF;    
END;    
/    
          
(C)    
DECLARE
   l_total   NUMBER;    
   l_name    VARCHAR2 (10) := 'PL/SQL';    
BEGIN
   IF l_total > 100 OR l_total IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');    
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');    
   END IF;    
END;    
/    
          
(D)    
DECLARE
   l_total   NUMBER;    
   l_name    VARCHAR2 (10) := 'PL/SQL';    
BEGIN
   IF NVL (l_total, 200) > 100    
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');    
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');    
   END IF;    
END;    
/

答案:ACD


    A: 未初始化的变量为NULL, IF条件相当于IF TRUE OR NULL, 前面的TRUE会导致OR被忽略,整个结果还是TRUE
    B: 未初始化的变量为NULL, IF条件里的表达式被求值为NULL, 代码会走到ELSE里面去。
    C: IF 里面用了IS NULL, 结果为TRUE
    D: NVL把NULL变成了200, 结果为TRUE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值