|
11-10 答案BD. 注意答案C里面的 '' 相当于NULL.
==========================
2011-11-11 集合元素的删除
作者:Steven Feuerstein
难度:中
我创建了一个嵌套表类型和过程:
CREATE OR REPLACE TYPE plch_numbers_t IS TABLE OF NUMBER;
/
CREATE OR REPLACE PROCEDURE plch_show_numbers (
title_in IN VARCHAR2
, numbers_in IN plch_numbers_t)
IS
BEGIN
DBMS_OUTPUT.put_line (title_in);
FOR rec IN (SELECT COLUMN_VALUE FROM TABLE (numbers_in))
LOOP
DBMS_OUTPUT.put_line (rec.COLUMN_VALUE);
END LOOP;
END;
/
下面的选项用来代替下列代码块的 /*BODY*/ 注释:
DECLARE
l_numbers plch_numbers_t
:= plch_numbers_t (12, 23, 34, 45, 56
, 67, 78, 89, 90, 100);
BEGIN
/*BODY*/
plch_show_numbers ('AFTER DELETE', l_numbers);
END;
/
哪些选项使得这个块执行之后会显示如下文本:
AFTER DELETE
23
45
67
89
换而言之,所有偶数元素都被删除了。
(A)
FOR indx IN 1 .. l_numbers.COUNT
LOOP
IF MOD (indx, 2) = 0
THEN
l_numbers.delete (indx);
END IF;
END LOOP;
(B)
FOR indx IN 1 .. l_numbers.COUNT
LOOP
IF MOD (l_numbers (indx), 2) = 0
THEN
l_numbers.delete (indx);
END IF;
END LOOP;
(C)
DELETE FROM TABLE (l_numbers)
WHERE MOD (index_value, 2) = 0;
(D)
FOR rec IN (SELECT *
FROM TABLE (l_numbers)
WHERE MOD (COLUMN_VALUE, 2) = 0)
LOOP
l_numbers.delete (rec.COLUMN_VALUE);
END LOOP;
|
|