NESTED TABLE型


コレクション型。
VARRAYと違い、配列のサイズを指定しなくてよい。
また、deleteなどメソッドを実装している。

SET SERVEROUTPUT ON

DECLARE

    --NESTED TABLE型の定義
    TYPE tMyList IS TABLE OF VARCHAR2(20) INDEX BY VARCHAR2(3);
    --上記の型を利用した変数の宣言
    wkList tMyList;

begin
    
	--変数に値をセット
	wkList('adr') := 'moji';
	wkList('nam') := 'harada';
	wkList('tel') := '090-xxxx-xxxx';

	--変数の値を取り出し
	DBMS_OUTPUT.put_line(wkList('nam'));

	--変数に格納されている要素数を取得
	DBMS_OUTPUT.put_line(wkList.count);

	--指定した要素を削除
	wkList.delete('nam');

	--指定した要素が存在するかチェック
	IF wkList.exists('nam') = false THEN
		DBMS_OUTPUT.put_line('要素が存在しません。');
	ELSE
		DBMS_OUTPUT.put_line(wkList('nam'));
	END IF;

END;
/


型の定義について

TYPE tMyList IS TABLE OF VARCHAR2(20) INDEX BY VARCHAR2(3);


tMyList・・・型の名前。任意に設定する。


TABLE OF VARCHAR2(20)・・・格納する値の型、サイズの指定。


INDEX BY VARCHAR2(3)・・・要素(格納、取り出しに使用するキー)の型、サイズの指定。