コレクションを操作するメッソッド
CREATE OR REPLACE PROCEDURE DSNEOETS.collectiontest
IS
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■ネストした表の宣言■
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
TYPE hoge_type IS TABLE OF varchar2(100);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■変数の宣言/初期化■
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
hoge1 hoge_type:=hoge_type('aaaa','bbbb','cccc','dddd');
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■VARRAYの宣言■
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
TYPE hoge_type2 IS VARRAY(5) OF varchar2(100);
hoge2 hoge_type2:=hoge_type2('aaaa','bbbb','cccc','dddd');
cnt INTEGER;
BEGIN
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■exists■ n番目の要素があった場合にTRUEを返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
IF hoge1.exists(1) THEN
DBMS_OUTPUT.PUT_LINE('要素あり');
END IF;
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■count■ 要素の数を返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('要素の数:' || hoge1.count);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■limit■ 要素の最大数を返す。ネストした表、結合配列はNULLを返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('要素の最大数:' || hoge2.limit);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■first■ 最初の索引番号を返す
■last■ 最後の索引番号を返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('最初の索引番号:' || hoge1.first);
DBMS_OUTPUT.PUT_LINE('最後の索引番号:' || hoge1.last);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■prior■ 前の索引番号を返す
■next■ 次の索引番号を返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
cnt := hoge1.first;
WHILE cnt IS NOT NULL
LOOP
DBMS_OUTPUT.PUT_LINE('要素:' || hoge1(cnt));
cnt := hoge1.next(cnt);
END LOOP;
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■extend■ ネストした表、VARRAYのサイズ大きくする
extend : 1つのNULL要素追加
extend(n) : n個のNULL要素追加
extend(n,i): i番目のコピーをn個追加
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('追加前要素の数:' || hoge1.count);
hoge1.extend;
DBMS_OUTPUT.PUT_LINE('追加後要素の数:' || hoge1.count);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■trim■ ネストした表、VARRAYのサイズ小さくする
trim : 末尾から1つの要素削除
trim(n) : 末尾からn個の要素削除
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('削除前要素の数:' || hoge1.count);
hoge1.trim;
DBMS_OUTPUT.PUT_LINE('削除後要素の数:' || hoge1.count);
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
■delete■ ネストした表、VARRAYのサイズ小さくする
delete : コレクションから全ての要素削除
delete(n) : n番目の要素削除
delete(m,n): m〜n番目の要素削除
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
DBMS_OUTPUT.PUT_LINE('削除前要素の数:' || hoge1.count);
hoge1.delete(2,3);
DBMS_OUTPUT.PUT_LINE('削除後要素の数:' || hoge1.count);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR!!' || SQLERRM(SQLCODE));
END;