Oracle PL/SQLの配列のサンプル

OracleのPL/SQLの配列のサンプルです。

確認環境
・Oracle Express Edition 11g Release 2

目次

配列のサンプル(VARRAY )

配列のサンプルです。最初に配列の要素数を指定する必要があります。

CREATE OR REPLACE PROCEDURE TEST1
IS
  TYPE VARRAY1 IS VARRAY(5) OF VARCHAR2(10);

  COLOR1 VARRAY1 := VARRAY1('赤','黄','青');

BEGIN
--	FOR i IN 1..COLOR1.COUNT LOOP
	FOR i IN COLOR1.first..COLOR1.last LOOP
    	DBMS_OUTPUT.PUT_LINE(COLOR1(i));
	END LOOP;
END;

3行目は、配列を宣言しています。要素数は5でVARCHAR2型とサイズ10を指定しています。
5行目は、変数COLOR1はVARRAY1型であると宣言しています。また初期値として値を3つセットしています。
9行目は、配列の要素の数分ループ処理を行います。
8行目のやり方でも可能です。

実行結果は以下の通りです。

SQL> execute test1
赤
黄
青

連想配列(旧称はPL/SQL表または索引付き表)

連想配列のサンプルです。最初に配列の要素数を指定する必要はありません。
INDEX BYを指定する必要があります。

CREATE OR REPLACE PROCEDURE TEST1
IS
  TYPE AR1  IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
  
  COLOR1 AR1;
  
BEGIN
	COLOR1(1) := '赤';
	COLOR1(2) := '黄';
	COLOR1(3) := '青';
	
--	FOR i IN 1..COLOR1.COUNT LOOP
	FOR i IN COLOR1.first..COLOR1.last LOOP
    	DBMS_OUTPUT.PUT_LINE(COLOR1(i));
	END LOOP;
END;
/

3行目は、配列を宣言しています。VARCHAR2型とサイズ10を指定しています。要素数の指定はありません。INDEX BYがついています。
5行目は、変数COLOR1はAR1型であると宣言しています。
8から10行目は、値をセットしています。添字は1から始まります。
13行目は、配列の要素の数分ループ処理を行います。
12行目のやり方でも可能です。

実行結果は以下の通りです。

SQL> execute test1
赤
黄
青

ネストした表

ネストした表のサンプルです。最初に配列の要素数を指定する必要はありません。
INDEX BYの指定も必要ありません。

CREATE OR REPLACE PROCEDURE TEST1
IS
  TYPE AR1  IS TABLE OF VARCHAR2(10) ;

  COLOR1 AR1 := AR1('赤','黄','青');
  
BEGIN

--	FOR i IN 1..COLOR1.COUNT LOOP
	FOR i IN COLOR1.first..COLOR1.last LOOP

    	DBMS_OUTPUT.PUT_LINE(COLOR1(i));

	END LOOP;
END;
/

3行目は、配列を宣言しています。VARCHAR2型とサイズ10を指定しています。要素数とINDEX BYの指定はありません。
5行目は、変数COLOR1はAR1型であると宣言しています。また初期値として値を3つセットしています。
10行目は、配列の要素の数分ループ処理を行います。
9行目のやり方でも可能です。

実行結果は以下の通りです。

SQL> execute test1
赤
黄
青

リンク

以下は、Oracleのコレクションのリンクです。
https://docs.oracle.com/cd/E16338_01/appdev.112/b56260/composites.htm#CHDEIDIC

関連の記事

Oracle PL/SQLのプロシージャのサンプル
Oracle PL/SQLのファンクションのサンプル
Oracle PL/SQLのパッケージのサンプル

△上に戻る