查看: 4387|回复: 6

[每日一题] 有奖活动:PL/SQL Challenge 每日一题:2012-7-30 对象类型的NULL判断

[复制链接]
论坛徽章:
533
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2012-8-1 03:16 | 显示全部楼层 |阅读模式
最快答对且答案未经编辑的puber将获得奥运章一枚(编辑过的答案不算),其他会员如果提供有价值的分析、讨论也可获得奥运章一枚。

以往旧题索引:
http://www.itpub.net/thread-1499223-1-1.html

原始出处:
http://www.plsqlchallenge.com/

作者:Steven Feuerstein
难度:中

注:本题给出答案时候要求给予简要说明才能得到奖品

我创建了如下的对象类型:
CREATE OR REPLACE TYPE plch_animal_ot IS OBJECT
(
   common_name VARCHAR2 (100),
   favorite_food INTEGER
)
/

哪些选项在执行之后会显示 "Undetermined Animal" ?

(A)
DECLARE
   l_rabbit   plch_animal_ot;
BEGIN
   IF l_rabbit IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Undetermined Animal');
   ELSE
      DBMS_OUTPUT.put_line ('Name: ' || l_rabbit.common_name);
   END IF;
END;
/

(B)
DECLARE
   l_rabbit   plch_animal_ot := plch_animal_ot (NULL, NULL);
BEGIN
   IF l_rabbit IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Undetermined Animal');
   ELSE
      DBMS_OUTPUT.put_line ('Name: ' || l_rabbit.common_name);
   END IF;
END;
/

(C)
DECLARE
   l_rabbit   plch_animal_ot := NULL;
BEGIN
   IF l_rabbit IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Undetermined Animal');
   ELSE
      DBMS_OUTPUT.put_line ('Name: ' || l_rabbit.common_name);
   END IF;
END;
/

(D)
DECLARE
   l_rabbit   plch_animal_ot;
BEGIN
   IF     l_rabbit.common_name IS NULL
      AND l_rabbit.favorite_food IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Undetermined Animal');
   ELSE
      DBMS_OUTPUT.put_line ('Name: ' || l_rabbit.common_name);
   END IF;
END;
/


认证徽章
论坛徽章:
21
优秀写手
日期:2014-12-26 06:00:142015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:41:112013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:50:44马上加薪
日期:2014-03-27 16:00:40奥迪
日期:2014-01-23 17:13:08蓝锆石
日期:2015-02-03 13:52:43马上有车
日期:2014-02-28 08:05:15暖羊羊
日期:2015-03-04 14:50:37
发表于 2012-8-1 08:50 | 显示全部楼层
答案:ACD
原因:
A:未赋值,默认为NULL
B:给对象的两个元素赋值成功,对象不为NULL
C:直接给对象赋值为NULL
D:对象为NULL,则对象的元素为NULL

使用道具 举报

回复
认证徽章
论坛徽章:
21
优秀写手
日期:2014-12-26 06:00:142015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:41:112013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:50:44马上加薪
日期:2014-03-27 16:00:40奥迪
日期:2014-01-23 17:13:08蓝锆石
日期:2015-02-03 13:52:43马上有车
日期:2014-02-28 08:05:15暖羊羊
日期:2015-03-04 14:50:37
发表于 2012-8-1 08:51 | 显示全部楼层
哇,坐到Newkid的沙發了

使用道具 举报

回复
论坛徽章:
12
奥运会纪念徽章:马术
日期:2012-08-14 18:12:40ITPUB社区12周年站庆徽章
日期:2013-09-13 11:28:50ITPUB社区千里马徽章
日期:2013-08-22 09:58:03紫蛋头
日期:2013-01-10 11:05:26咸鸭蛋
日期:2013-01-04 10:58:46复活蛋
日期:2012-12-11 16:53:14ITPUB 11周年纪念徽章
日期:2012-10-31 14:48:00奥运会纪念徽章:体操
日期:2012-08-14 18:13:12奥运会纪念徽章:自行车
日期:2012-08-14 18:13:04奥运会纪念徽章:羽毛球
日期:2012-08-14 18:13:04
发表于 2012-8-1 16:20 | 显示全部楼层
楼上的比我聪明,这都知道!!

使用道具 举报

回复
论坛徽章:
533
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
 楼主| 发表于 2012-8-2 03:29 | 显示全部楼层
2楼答对了,答案ACD.
必须注意的是答案D. 如果一个对象未经初始化(必须调用其同名的构造函数),那么假设你要对它的成员进行赋值就会得到这个错误:
ORA-06530: Reference to uninitialized composite

但答案D是读取一个未初始化对象的成员,进行IS NULL判断,这在PLSQL是允许的,不会出错。

使用道具 举报

回复
认证徽章
论坛徽章:
21
优秀写手
日期:2014-12-26 06:00:142015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:41:112013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:50:44马上加薪
日期:2014-03-27 16:00:40奥迪
日期:2014-01-23 17:13:08蓝锆石
日期:2015-02-03 13:52:43马上有车
日期:2014-02-28 08:05:15暖羊羊
日期:2015-03-04 14:50:37
发表于 2012-8-2 08:06 | 显示全部楼层
newkid 发表于 2012-8-2 03:29
2楼答对了,答案ACD.
必须注意的是答案D. 如果一个对象未经初始化(必须调用其同名的构造函数),那么假设 ...



老大,你差我个章

使用道具 举报

回复
论坛徽章:
118
现任管理团队成员
日期:2011-05-07 01:45:08马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14ITPUB元老
日期:2014-03-05 22:46:57版主2段
日期:2014-03-27 02:21:00射手座
日期:2015-11-10 10:28:18
发表于 2012-8-6 14:40 | 显示全部楼层
奖励已发,感谢大家的参与!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表