蜜蜂号覚書 コレクション型
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

PL/SQL コレクション型

それぞれ一次元の配列である。

連想配列

  • 添え字の型定義が可能。(数値 or 文字列)
  • 添え字は -2^21~2^31 まで使用可能。
  • 添え字は連続している必要はない。(疎結合)
  • 配列サイズは自動拡張

宣言

TYPE array IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
arrayと言う名前のVARCHAR2型の配列を作る。添え字は数値。
TYPE array IS TABLE OF VARCHAR2(10) INDEX BY VARCHAR2(5);
arrayと言う名前のVARCHAR2型の配列を作る。添え字は文字列。

初期化

array_List array;
array_List(1) := 'aaa';
array_List(9) := 'bbb';
array_List(300) := 'ccc';
添え字を文字列として定義するとこういうことが出来る。
array_List('ほげ') := 'hoge';
array_List('ふー') := 'foo';
array_List('bar') := 'bar';

ネステッド・テーブル

  • 添え字は 1 ~ 2^31 まで使用可能。

宣言

TYPE array IS TABLE OF VARCHAR2(10) NOT NULL;
  • NULLを許可しないVARCHAR2の配列。
  • NOT NULLは省略可能。(NULLを許可する場合)

初期化

array_List array := array('aaa', 'bbb', 'ccc'); --初期化付宣言
null_List array; --宣言のみ
null_List := array(); --初期化
null_List.EXTEND(100); --添え字100を作成
null_List(100); := 'aaa'; --代入

拡張

array.EXTEND(100);
array(100) := 'aaa';
arrayの要素100を拡張し、aaaを代入する。(未拡張領域に対しての代入はエラー)

VARRAY

可変長配列

宣言

TYPE array IS VARRAY(100) OF VARCHAR2(10) NOT NULL;
要素が最大100あるVARCHAR2の配列。NULLを許可しない。

初期化、拡張

array_List array := array('aaa', 'bbb', 'ccc'); --初期化付宣言
null_List array;
null_List.EXTEND(50); --配列を +50 初期化。

ネストされたコレクション

CREATE TYPE hoge IS TABLE OF VARCHAR2(100);
CREATE TYPE moge IS TABLE OF hoge;
例2:
DECLARE
  TYPE hoge IS RECORD(
    id INTEGER,
    name VARCHAR2(200)
  );
  TYPE array IS TABLE OF hoge;

  list array; --hoge型のレコードを持つTABLE。
BEGIN
  list := array(); --初期化
  list.EXTEND(1); --1レコード目。拡張し作成。
  list(1).id := 1; --1レコード目のid項目に1を代入。
  list(1).name := 'hoge'; --1レコード目のname項目にhogeを代入。
  list.EXTEND(2);
  list(2).id := 2;
  list(2).name := 'moge';
  --以下同文...

  FOR i IN 1 .. 2 LOOP
    DBMS_OUTPUT.PUT_LINE('id:'||list(i).id||' name:'||list(i).name);
  END LOOP;
END;
/

参考URL


なんかあればどうぞ

名前:
コメント: