DECLARE
|
nt_base nt_numtype := nt_numtype(1, 7, 3, 4, 2, 6, 5, 18);
|
nt_sort nt_numtype;
|
|
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)||'CARDINALITY Of Base Nested Table ['||CARDINALITY(nt_base)||']');
|
DBMS_OUTPUT.PUT_LINE('Base Nested Table ['||nt_base.COUNT||'] -> ('||op_nt(nt_base)||')');
|
|
SELECT CAST(MULTISET(SELECT * FROM TABLE(nt_base) ORDER BY 1) AS nt_numtype)
|
INTO nt_sort FROM DUAL;
|
DBMS_OUTPUT.PUT_LINE('Sorted Nested Table ['||nt_base.COUNT||'] -> ('||op_nt(nt_sort)||')');
|
|
nt_sort := nt_numtype();
|
nt_base.EXTEND;
|
nt_base(9) := NULL;
|
nt_base.DELETE(8);
|
|
SELECT * BULK COLLECT INTO nt_sort
|
FROM TABLE(CAST(nt_base AS nt_numtype)) ORDER BY 1 ASC NULLS FIRST;
|
DBMS_OUTPUT.PUT_LINE('Sorted Ascending ['||nt_base.COUNT||'] -> ('||op_nt(nt_sort)||')');
|
|
SELECT * BULK COLLECT INTO nt_sort
|
FROM TABLE(CAST(nt_base AS nt_numtype)) ORDER BY 1 DESC NULLS FIRST;
|
|
DBMS_OUTPUT.PUT_LINE('Sorted Descending ['||nt_base.COUNT||'] -> ('||op_nt(nt_sort)||')');
|
DBMS_OUTPUT.PUT_LINE(CHR(10)||'CARDINALITY Of Final Nested Table ['||CARDINALITY(nt_base)||']');
|
END;
|
/
|