PL/SQL Challenge 每日一题:2015-10-19 嵌套的集合

[复制链接]
查看11 | 回复4 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
(原发表于2011-1-16)

最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我 (Steven Feuerstein) 想要跟踪一下我的书的尺寸(至少有一本一致在增长)。既然一本书就是一个长方体(每个面都是长方形),它的尺寸可以用宽,高,长的组合来指定。有如下的声明:
DECLARE
TYPE width_t IS TABLE OF VARCHAR2 (100)

INDEX BY PLS_INTEGER;
TYPE height_t IS TABLE OF width_t

INDEX BY PLS_INTEGER;
TYPE length_t IS TABLE OF height_t

INDEX BY PLS_INTEGER;
l_opp5 length_t;
哪些选项包含了一个赋值语句,它指定了我最大最肥的一本书"Oracle PL/SQL Programming"的尺寸,宽5英寸,高2英寸,长10英寸?
(A)
BEGIN
l_opp5 (10, 2, 5) := 'Oracle PL/SQL Programming';
END;
(B)
BEGIN
l_opp5 (5, 2, 10) := 'Oracle PL/SQL Programming';
END;
(C)
BEGIN
l_opp5 (5) (2) (10) := 'Oracle PL/SQL Programming';
END;
(D)
BEGIN
l_opp5 (10) (2) (5) := 'Oracle PL/SQL Programming';
END;

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
以下是猜的
宽5英寸,高2英寸,长10英寸 排除了 A,D 。
选C ,B 的话 l_opp5 (5, 2, 10) := 'Oracle PL/SQL Programming'; 应该是5的位置都被填了'Oracle PL/SQL Programming',2,10的位置放空

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
我选D
AB的语法都不对。
C的话我倾向于先长再高后宽。
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
选D
这种嵌套的集合,更像是构造一个多维数组。
所以 l_opp5 (10)是length_t的元素, l_opp5 (10) (2)是height_t的元素l_opp5 (10) (2) (5)是width_t的元素
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层

答案D, 3楼得奖。
A, B: 如果ORACLE支持多维数组,这个语法就对了,但它不支持。相反你必须在集合中嵌套集合。
ORACLE会报错: "PLS-00316: PL/SQL TABLEs must use a single index" error.
C: 这个选项用了正确的语法,说明了ORACLE不支持真正的多维数组。
不幸的是索引的顺序错了。这个代码块指定了一本书,其长度为5英寸,宽度为10英寸。
D: 这个选项用了正确的语法,指定了一本书,其长度为10英寸,宽度为5英寸,高度为2英寸。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行