向可变数组和嵌套表尾部添加元素。集合可以为EMPTY,不能为NULL;
l
EXTEND:向集合中添加一个NULL元素。
l
EXTEND(n):向集合中添加n个null元素。
l
EXTEND(m,n):向集合中添加m个第n个元素拷贝。
Extend操作于集合的内部大小。DELETE删除了元素但内部占位符扔保留。EXTEND认
为删除的元素还存在。
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 73 -
CREATE OR REPLACE PROCEDURE P_5_17 AS
nt nt_type := nt_type(11, 22, 33);
BEGIN
i := nt.FIRST;
IF i IS NULL THEN
DBMS_OUTPUT.PUT_LINE('nt is empty');
ELSE
WHILE i IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE('nt.(' || i || ') = ');
DBMS_OUTPUT.PUT_LINE( nt(i));
i := nt.NEXT(i);
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
nt.EXTEND(2,1); -- Append two copies of first element
i := nt.FIRST;
IF i IS NULL THEN
DBMS_OUTPUT.PUT_LINE('nt is empty');
ELSE
WHILE i IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE('nt.(' || i || ') = ');
DBMS_OUTPUT.PUT_LINE( nt(i));
i := nt.NEXT(i);
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
nt.DELETE(5); -- Delete fifth element
i := nt.FIRST;
IF i IS NULL THEN
DBMS_OUTPUT.PUT_LINE('nt is empty');
ELSE
WHILE i IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE('nt.(' || i || ') = ');
DBMS_OUTPUT.PUT_LINE( nt(i));
i := nt.NEXT(i);
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
nt.EXTEND; -- Append one null element
i := nt.FIRST;
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 74 -
IF i IS NULL THEN
DBMS_OUTPUT.PUT_LINE('nt is empty');
ELSE
WHILE i IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE('nt.(' || i || ') = ');
DBMS_OUTPUT.PUT_LINE( nt(i));
i := nt.NEXT(i);
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
END;
--Result:
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
--nt.(4) = 11
--nt.(5) = 11
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
--nt.(4) = 11
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
--nt.(4) = 11
--nt.(6) = NULL