ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
可変長配列(VARRAY)
スポンサード リンク

TYPE 配列名 IS VARRAY(size) OF データ型 [NOT NULL];

変数名 配列名;

変数名 := 配列名(); ※コンストラクタで初期化
VARRAY型の配列を配列の最大サイズとともに定義します。
最大サイズ定義後は最大サイズの変更はできません。

配列の定義をしたら、変数として利用する為に続けて、配列名の変数を宣言します。

定義した変数は、コンストラクタで初期化しないとアクセスできません。


例1) 配列を定義、初期化した後、値を代入する。
 declare

  -- 配列の最大サイズ5、varchar2(3)で定義。
    type empno_array is varray(5) of varchar2(3);

    -- 変数名”ep”で変数定義し、コンストラクタで初期化。
    ep empno_array := empno_array('E01', 'E02', 'E03','E04','E05');

 begin

    -- 配列の1番目に、'E99'を代入
    ep(1) := 'E99';

 end;


例2) 配列を定義、初期化する時には値を設定しない。
     配列を拡張する。
 declare

  -- 配列の最大サイズ5、varchar2(3)で定義。
    type empno_array is varray(5) of varchar2(3);

    -- 変数名”ep”で変数定義し、コンストラクタで初期化。
    ep empno_array := empno_array();

 begin

    -- 配列の1番目は初期化されてないのでエラーとなる。
    ep(1) := 'E99';

  -- 配列の最後にNULL要素を1つ追加する。
  ep.extend;

    -- 配列の1番目に、'E11'を代入する。
    ep(1) := 'E11';


  -- 配列の最後にNULL要素を4つ追加する。。
  -- 配列最大サイズは5なので、これ以上は拡張できない。
  ep.extend(4);

    -- 配列の2番目に、'E99'を代入する。
    ep(2) := 'E99';

 end;


上記の例にある、extend以外にも、VARRAYやネスト表のコレクションに共通して使用可能なメソッドが、あるので、配列で使用可能なメソッドを参照して下さい。

スポンサード リンク


可変長配列(VARRAY)
ネストした表(NESTED TABLE)
配列で使用可能なメソッド

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ