コレクション型 - (2006/02/03 (金) 10:20:56) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
*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
[[Trick and Treat Oracle More Cool ! - PLSQL コレクション型>http://biz.rivus.jp/plsql_collection.html]]
----
*なんかあればどうぞ
#comment(vsize=2,nsize=20,size=40)
#contents
*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
[[Trick and Treat Oracle More Cool ! - PLSQL コレクション型>http://biz.rivus.jp/plsql_collection.html]]
----
*なんかあればどうぞ
#comment(vsize=2,nsize=20,size=40)
表示オプション
横に並べて表示:
変化行の前後のみ表示: