ITPub博客

首页 > 数据库 > Oracle > PL/SQL每日一题:含有NULL的IF条件

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

原创 Oracle 作者:幕南风 时间:2014-07-03 13:43:22 0 删除 编辑

       哪些选项在执行之后会显示"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

<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1207957/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 记一条子查询的SQL优化
下一篇: 在sqlplus中使用帮助系统
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章