Set Up Collection
CREATE OR REPLACE PACKAGE methods_data
IS
TYPE names_t IS TABLE OF VARCHAR2 (100);
my_family names_t
:= names_t ('Veva',
'Chris',
'Eli',
'Lauren',
'Loey',
'Juna',
'Steven');
END;
Package created.
Delete One Element
BEGIN
methods_data.my_family.DELETE (3);
END;
Statement processed.
Use EXISTS to See if Element is Defined
BEGIN
IF methods_data.my_family.EXISTS (2)
THEN
DBMS_OUTPUT.put_line (methods_data.my_family (2));
END IF;
BEGIN
DBMS_OUTPUT.put_line (methods_data.my_family (3));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line ('That''s why we have EXISTS!');
END;
IF NOT methods_data.my_family.EXISTS (3)
THEN
DBMS_OUTPUT.put_line ('No name at index 3!');
END IF;
END;
Chris
That's why we have EXISTS!
No name at index 3!
Delete a Range of Values
BEGIN
methods_data.my_family.DELETE (5, 7);
END;
Statement processed.
COUNT Shows You the, Ahem, Count
BEGIN
DBMS_OUTPUT.put_line (
'Count left = ' || methods_data.my_family.COUNT);
END;
Count left = 3
Empty Entire Collection
BEGIN
methods_data.my_family.DELETE;
DBMS_OUTPUT.put_line (
'Count left = ' || methods_data.my_family.COUNT);
END;
Count left = 0
Rebuild Collection
BEGIN
methods_data.my_family :=
methods_data.names_t ('Veva',
'Chris',
'Eli',
'Lauren',
'Loey',
'Juna',
'Steven');
END;
Statement processed.
Navigation Methods: FIRST, LAST, NEXT, PRIOR
BEGIN
DBMS_OUTPUT.put_line (
'First = ' || methods_data.my_family.FIRST);
DBMS_OUTPUT.put_line (
'Last = ' || methods_data.my_family.LAST);
DBMS_OUTPUT.put_line (
'Next from 3 = ' || methods_data.my_family.NEXT (3));
DBMS_OUTPUT.put_line (
'Next from last = '
|| NVL (
TO_CHAR (methods_data.my_family.NEXT (
methods_data.my_family.LAST)),
'Not a thing'));
methods_data.my_family.delete (2);
DBMS_OUTPUT.put_line (
'Prior from 3 (with 2 deleted) = '
|| methods_data.my_family.PRIOR (3));
DBMS_OUTPUT.put_line (
'Prior from first = '
|| NVL (
TO_CHAR (methods_data.my_family.PRIOR (
methods_data.my_family.FIRST)),
'Not a thing'));
END;
First = 1
Last = 7
Next from 3 = 4
Next from last = Not a thing
Prior from 3 (with 2 deleted) = 1
Prior from first = Not a thing
EXTEND Adds to Collection
BEGIN
methods_data.my_family.EXTEND;
DBMS_OUTPUT.put_line (
'Last = ' || methods_data.my_family.LAST);
END;
Last = 8
Extend Multiple Elements
BEGIN
methods_data.my_family.EXTEND (5);
DBMS_OUTPUT.put_line (
'Last = ' || methods_data.my_family.LAST);
END;
Last = 13
Rebuild Collection
BEGIN
methods_data.my_family :=
methods_data.names_t ('Veva',
'Chris',
'Eli',
'Lauren',
'Loey',
'Juna',
'Steven');
END;
Statement processed.
Extend with Copy
BEGIN
methods_data.my_family.EXTEND (10, 2);
FOR indx IN 1 .. methods_data.my_family.COUNT
LOOP
DBMS_OUTPUT.put_line (methods_data.my_family (indx));
END LOOP;
END;
Veva
Chris
Eli
Lauren
Loey
Juna
Steven
Chris
Chris
Chris
Chris
Chris
Chris
Chris
Chris
Chris
Chris