TRIM deletes elements from the end of a varray or nested table.
This method has these forms:
TRIM operates on the internal size of a collection.
If DELETE deletes an element but keeps a placeholder for it, then TRIM considers the element to exist.
TRIM can delete a deleted element.
You cannot restore a trimmed element by assigning a valid value to it.
The following code declares a nested table variable and shows how to use TRIM and DELETE method.
SQL> SQL>-- from w w w .j av a 2 s . c om SQL> CREATE OR REPLACE TYPE nt_type IS TABLE OF NUMBER; 2 / Type created. SQL> CREATE OR REPLACE PROCEDURE print_nt (nt nt_type) IS 2 i NUMBER; 3 BEGIN 4 i := nt.FIRST; 5 6 IF i IS NULL THEN 7 DBMS_OUTPUT.PUT_LINE('nt is empty'); 8 ELSE 9 WHILE i IS NOT NULL LOOP 10 DBMS_OUTPUT.PUT('nt.(' || i || ') = '); print(nt(i)); 11 i := nt.NEXT(i); 12 END LOOP; 13 END IF; 14 END print_nt; 15 / Procedure created. SQL> SQL> SQL> DECLARE 2 nt nt_type := nt_type(11, 22, 33, 44, 55, 66); 3 BEGIN 4 print_nt(nt); 5 6 nt.TRIM; -- Trim last element 7 print_nt(nt); 8 9 nt.DELETE(4); -- Delete fourth element 10 print_nt(nt); 11 12 nt.TRIM(2); -- Trim last two elements 13 print_nt(nt); 14 END; 15 / 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 PL/SQL procedure successfully completed. SQL>