PL/SQL Challenge 每日一题:2015-8-7 检查集合元素是否存在

[复制链接]
查看11 | 回复6 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Elic
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
哪些选项可用来取代下列代码块的##REPLACE## 注释,使得它执行之后会显示 "Done" ?
declare
type TInts is table of int;
l_Coll TInts;
begin
if ##REPLACE## then
dbms_output.put_line('Done');
end if;
end;
/
(A)
not l_Coll.exists(1)
(B)
l_Coll.first is null
(C)
l_Coll.last is null
(D)
l_Coll.count = 0
(E)
l_Coll.limit is null
(F)
l_Coll.prior(100) is null
(G)
l_Coll.next(0) is null
(H)
l_Coll is null

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
A是OK的,标准写法
H是OK的,此时该集合确实为空
BCDEFG没有初始化,不能直接first和last和count和limit和prior和next内置函数
我选AH
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
A是正常写法
H也是对的,用空判断么
BCDEFG没有初始化,既然问到数组了,我估摸这这论坛可能有的还没用过上面的某些内置函数COUNT
-- 返回集合中元素的个数DELETE
-- 删除集合中所有元素DELETE(X)
-- 删除元素下标为X的元素对VARRAY非法DELETE(X,Y)
-- 删除元素下标从X到Y的元素对VARRAY非法EXIST(X)
-- 如果集合元素X已经初始化,则返回TRUE,否则返回FALSEEXTEND
-- 在集合末尾添加一个元素对INDEX_BY非法EXTEND(X)
-- 在集合末尾添加X个元素对INDEX_BY非法EXTEND(X,N)
-- 在集合末尾添加元素N的X个副本对INDEX_BY非法FIRST
-- 返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。LAST
-- 返回集合中最后一个元素的下标号,对于VARRAY返回值始终等于COUNT.LIMIT
-- 返回VARRY集合的最大的元素个数INDEX_BY集合和嵌套表无用NEXT(X)
-- 返回在第X个元素之后及紧挨着它的元素值,如果X是最后一个元素,返回NULL。PRIOR(X)
-- 返回在第X个元素之前紧挨着它的元素的值,如果X是第一个元素,则返回NULL。TRIM
-- 从集合末端开始删除一个元素对于INDEX_BY不合法TRIM(X)
-- 从集合末端开始删除X个元素VAR_ARRAY.NEXT(3);
-- 返回VAR_ARRAY(3)复制代码
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
答案AH, 2楼得奖。
其他的会报错:
ORA-06531: Reference to uninitialized collection

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
empty和null同时出现的时候用中文怎么说才能区分
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
〇〇 发表于 2015-8-23 21:43
empty和null同时出现的时候用中文怎么说才能区分

前者是集合里没元素
后者是集合对象为空
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
lastwinner 发表于 2015-8-23 23:55
前者是集合里没元素
后者是集合对象为空

精炼点的
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行