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

来源:互联网 发布:系统图标网络关闭 编辑:程序博客网 时间:2024/05/20 11:26

       些选项在执行之后会显示"Hello Earth"?


(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

原创粉丝点击