最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我创建了一张表并填入数据:
CREATE TABLE plch_worms
(
worm_name VARCHAR2 (100),
lives_inVARCHAR2 (100)
)
/
BEGIN
INSERT INTO plch_worms
VALUES ('Spaceworm', 'Jupiter');
INSERT INTO plch_worms
VALUES ('Shipworm', 'Ocean');
INSERT INTO plch_worms
VALUES ('Earworm', 'Ear');
INSERT INTO plch_worms
VALUES ('Earthworm', 'Dirt');
COMMIT;
END;
/
然后我写了下列不完整的代码块:
DECLARE
CURSOR worms_cur
IS
SELECT *
FROM plch_worms
ORDER BY worm_name DESC;
TYPE worms_t IS TABLE OF worms_cur%ROWTYPE;
l_worms worms_t;
BEGIN
/*CODE*/
CLOSE worms_cur;
END;
/
哪些选项可用来取代/*CODE*/注释,使得代码块执行之后会显示下列文本:
Jupiter
Ocean
Ear
Dirt
(A)
OPEN worms_cur;
LOOP
FETCH worms_cur BULK COLLECT INTO l_worms;
FOR indx IN 1 .. l_worms.COUNT
LOOP
DBMS_OUTPUT.put_line (l_worms (indx).lives_in);
END LOOP;
EXIT WHEN worms_cur%NOTFOUND;
END LOOP;
(B)
OPEN worms_cur;
FETCH worms_cur BULK COLLECT INTO l_worms;
FOR indx IN 1 .. l_worms.COUNT
LOOP
DBMS_OUTPUT.put_line (l_worms (indx).lives_in);
END LOOP;
(C)
OPEN worms_cur;
FETCH worms_cur BULK COLLECT INTO l_worms LIMIT 100;
FOR indx IN 1 .. l_worms.COUNT
LOOP
DBMS_OUTPUT.put_line (l_worms (indx).lives_in);
END LOOP;
(D)
OPEN worms_cur;
LOOP
FETCH worms_cur BULK COLLECT INTO l_worms LIMIT 3;
FOR indx IN 1 .. l_worms.COUNT
LOOP
DBMS_OUTPUT.put_line (l_worms (indx).lives_in);
END LOOP;
EXIT WHEN worms_cur%NOTFOUND;
END LOOP;
|