有奖活动:PL/SQL Challenge 每日一题:2012-8-16 删除集合元素的方法

[复制链接]
查看11 | 回复4 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
最快答对且答案未经编辑的puber将获得奥运章一枚(编辑过的答案不算),其他会员如果提供有价值的分析、讨论也可获得奥运章一枚。
以往旧题索引:
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:koko
难度:中
注:本题给出答案时候要求给予简要说明才能得到奖品
我写了如下未完成的代码块:
DECLARE
TYPE aat IS TABLE OF NUMBER
INDEX BY PLS_INTEGER;
TYPE ntt IS TABLE OF NUMBER;
TYPE vat IS VARRAY (5) OF NUMBER;
l_aa aat;
l_nt ntt := ntt ();
l_va vat := vat ();
BEGIN
/*EXECUTE*/
END;
哪些选项可用来取代/*EXECUTE*/注释,从而使得代码块能够成功执行而不抛出异常?
(A)
l_aa(1) := 0;
l_aa.TRIM;
l_aa(1) := 0;
(B)
l_aa(1) := 0;
l_aa.DELETE(1);
l_aa(1) := 0;
(C)
l_aa(1) := 0;
l_aa.DELETE;
l_aa(1) := 0;
(D)
l_nt.EXTEND;
l_nt(1) := 0;
l_nt.TRIM;
l_nt(1) := 0;
(E)
l_nt.EXTEND;
l_nt(1) := 0;
l_nt.DELETE(1);
l_nt(1) := 0;
(F)
l_nt.EXTEND;
l_nt(1) := 0;
l_nt.DELETE;
l_nt(1) := 0;
(G)
l_va.EXTEND;
l_va(1) := 0;
l_va.TRIM;
l_va(1) := 0;
(H)
l_va.EXTEND;
l_va(1) := 0;
l_va.DELETE(1);
l_va(1) := 0;
(I)
l_va.EXTEND;
l_va(1) := 0;
l_va.DELETE;
l_va(1) := 0;



回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
不熟悉的话,只要查了手册并认真思考,不用执行就能知道各选项正确与否
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
BCE
A trim只用于nt(nested table)和va(varray)
B 正确
C 正确,只有一个元素,和B没什么分别
D nt类型需要先extend(分配空间),前两步正确,trim之后,如要再引用,需要再extend,extend就是extend(1)
E 正确,trim和delete的不同,plsql会保留被delete(m, n)及delete(n)形式delete掉的元素的占位符
F plsql不保留被delete形式delete掉的占位符
G 同D
H va不稀疏,所以不能从中间delete
I 虽然没从中间delete,但是delete之后没有extend
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
答案BCE, 3楼答对了。
回复

使用道具 举报

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


奖励已发,请查收!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行