从可变数组或者嵌套表尾部删除元素。有如下形式:
l
TRIM:当集合至少有一个元素,则从集合尾部移除一个元素。
l
TRIM(n):如果集合至少有n个元素,则从集合尾部移除n个元素。
TRIM针对的是集合内部大小。DELETE删除元素会保留占位符,而TRIM认为元素还存
在,所以TRIM可以删除被DELETE的元素。
CREATE OR REPLACE PROCEDURE P_5_16 AS
nt nt_type := nt_type(11, 22, 33, 44, 55, 66);
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 71 -
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.TRIM; -- Trim last 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(4); -- Delete fourth 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.TRIM(2); -- Trim last two elements
i := nt.FIRST;
IF i IS NULL THEN
DBMS_OUTPUT.PUT_LINE('nt is empty');
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 72 -
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.(4) = 44
--nt.(5) = 55
--nt.(6) = 66
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
--nt.(4) = 44
--nt.(5) = 55
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
--nt.(5) = 55
---
--nt.(1) = 11
--nt.(2) = 22
--nt.(3) = 33
---