DECLARE
|
nt_base nt_numtype := nt_numtype(1, 2, 3, 4, 6, 3, 4, 2, 6, 5, 7, 18);
|
idx PLS_INTEGER;
|
v_data VARCHAR2(200) := '(';
|
|
FUNCTION op_nt(i_nt IN nt_numtype) RETURN VARCHAR2 IS
|
s_Nested_tab VARCHAR2(200);
|
BEGIN
|
|
FOR idx IN i_nt.FIRST .. i_nt.LAST LOOP
|
IF idx < i_nt.COUNT THEN
|
s_nested_tab := s_nested_tab||i_nt(idx)||', ';
|
ELSE
|
s_nested_tab := s_nested_tab||i_nt(idx);
|
END IF;
|
END LOOP;
|
RETURN s_nested_tab;
|
END op_nt;
|
|
BEGIN
|
DBMS_OUTPUT.PUT_LINE(CHR(10)||'nt_base ['||nt_base.COUNT||'] '||op_nt(nt_base));
|
idx := nt_base.FIRST;
|
nt_base.DELETE(2);
|
|
WHILE nt_base.EXISTS(idx) LOOP
|
v_data := v_data||nt_base(idx);
|
idx := nt_base.NEXT(idx);
|
IF nt_base.EXISTS(idx) THEN
|
v_data := v_data||', ';
|
END IF;
|
END LOOP;
|
v_data := v_data||')';
|
DBMS_OUTPUT.PUT_LINE(CHR(10)||'nt_base ['||nt_base.COUNT||'] '||v_data);
|
|
idx := nt_base.LAST;
|
nt_base.DELETE(2); -- no effect (non-existant element)
|
nt_base.DELETE(3);
|
v_data := '(';
|
|
WHILE nt_base.EXISTS(idx) LOOP
|
v_data := v_data||nt_base(idx);
|
idx := nt_base.PRIOR(idx);
|
IF nt_base.EXISTS(idx) THEN
|
v_data := v_data||', ';
|
END IF;
|
END LOOP;
|
v_data := v_data||')';
|
DBMS_OUTPUT.PUT_LINE(CHR(10)||'nt_base ['||nt_base.COUNT||'] '||v_data);
|
END;
|
/
|