最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
注:本题执行环境为12C及更高版本
我执行了下列语句:
CREATE OR REPLACE PACKAGE plch_pkg
AUTHID DEFINER
IS
TYPE plch_letters_t IS TABLE OF VARCHAR2 (1)
INDEX BY PLS_INTEGER;
TYPE plch_pairs_rt IS RECORD
(
idx
INTEGER,
one_letter VARCHAR2 (1)
);
TYPE plch_pairs_t IS TABLE OF plch_pairs_rt
INDEX BY PLS_INTEGER;
END;
/
哪些选项执行之后会显示如下文本?
E
D
C
B
A
(A)
DECLARE
l_letters plch_pkg.plch_letters_t;
BEGIN
FOR indx IN 1 .. 5
LOOP
l_letters (indx) := SUBSTR ('EDCBA', indx, 1);
END LOOP;
FOR rec IN (SELECT COLUMN_VALUE FROM TABLE (l_letters)
ORDER BY ROWNUM DESC)
LOOP
DBMS_OUTPUT.put_line (rec.COLUMN_VALUE);
END LOOP;
END;
/
(B)
DECLARE
l_letters plch_pkg.plch_letters_t;
BEGIN
FOR indx IN 1 .. 5
LOOP
l_letters (indx) := SUBSTR ('EDCBA', indx, 1);
END LOOP;
FOR rec IN (SELECT COLUMN_VALUE
FROM TABLE (l_letters)
ORDER BY COLUMN_VALUE)
LOOP
DBMS_OUTPUT.put_line (rec.COLUMN_VALUE);
END LOOP;
END;
/
(C)
DECLARE
l_letters plch_pkg.plch_pairs_t;
BEGIN
FOR indx IN 1 .. 5
LOOP
l_letters (indx).idx := indx;
l_letters (indx).one_letter := SUBSTR ('EDCBA', indx, 1);
END LOOP;
FOR rec IN (SELECT one_letter
FROM TABLE (l_letters)
ORDER BY idx)
LOOP
DBMS_OUTPUT.put_line (rec.one_letter);
END LOOP;
END;
/
(D)
DECLARE
l_letters plch_pkg.plch_letters_t;
l_index PLS_INTEGER;
BEGIN
FOR indx IN 1 .. 5
LOOP
l_letters (indx) := SUBSTR ('EDCBA', indx, 1);
END LOOP;
l_index := l_letters.FIRST;
WHILE l_index IS NOT NULL
LOOP
DBMS_OUTPUT.put_line (l_letters (l_index));
l_index := l_letters.NEXT (l_index);
END LOOP;
END;
/
|