有奖活动:PL/SQL Challenge 每日一题:2012-11-16 遍历集合

[复制链接]
查看11 | 回复5 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
最先答对且答案未经编辑的puber将获得奥运章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得奥运章一枚。
以往旧题索引:
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
难度:中
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我创建了这个包:
CREATE OR REPLACE PACKAGE plch_pkg
IS
TYPE numbers_t IS TABLE OF NUMBER;
END;
/
哪个选项执行之后会显示如下输出?
Countdown
5
4
3
2
1
(A)
DECLARE
l_numbers plch_pkg.numbers_t
:= plch_pkg.numbers_t (5, 4, 3, 2, 1);
BEGIN
DBMS_OUTPUT.put_line ('Countdown');
FOR indx IN 1 .. l_numbers.COUNT
LOOP
DBMS_OUTPUT.put_line (l_numbers (indx));
END LOOP;
END;
/

(B)
DECLARE
l_numbers plch_pkg.numbers_t
:= plch_pkg.numbers_t (5, 4, 3, 2, 1);
BEGIN
DBMS_OUTPUT.put_line ('Countdown');
FOR indx IN REVERSE 1 .. l_numbers.COUNT
LOOP
DBMS_OUTPUT.put_line (l_numbers (indx));
END LOOP;
END;
/

(C)
DECLARE
l_numbers plch_pkg.numbers_t
:= plch_pkg.numbers_t (5, 4, 3, 2, 1);
l_index PLS_INTEGER;
BEGIN
DBMS_OUTPUT.put_line ('Countdown');
l_index := l_numbers.LAST;
WHILE (l_index IS NOT NULL)
LOOP
DBMS_OUTPUT.put_line (l_numbers (l_index));
l_index := l_numbers.PRIOR (l_index);
END LOOP;
END;
/

(D)
DECLARE
l_numbers plch_pkg.numbers_t
:= plch_pkg.numbers_t (5, 4, 3, 2, 1);
l_index PLS_INTEGER;
BEGIN
DBMS_OUTPUT.put_line ('Countdown');
l_index := l_numbers.FIRST;
WHILE (l_index IS NOT NULL)
LOOP
DBMS_OUTPUT.put_line (l_numbers (l_index));
l_index := l_numbers.NEXT (l_index);
END LOOP;
END;
/


回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
A D
B和C显示的是1 2 3 4 5
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
答案AD
A:for循环+嵌套表正常用法
B:reverse函数会反向排列给定的数组元素,所以输出是12345
C:l_index := l_numbers.LAST;先取到1,然后依次取PRIOR,输出12345
D:l_index := l_numbers.FIRST;先取到5,然后用next,输出54321
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
都有可学习的地方,不错
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
答案 AD, 2楼得奖.
B: 用了REVERSE关键字,所以输出顺序是反的。
C: 用了从尾到头的遍历方法,所以输出顺序是反的。

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
截至到今日的每日一题奖励已发,感谢大家的支持和参与!!
感谢newkid的热心组织!!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行