** 配列操作を行う([[Oracleメモ]]) [#j5292546] ** 配列操作を行う([[Oracle>Oracleメモ]]) [#j5292546] #setlinebreak(on); /** * ネステッドテーブル(上限のない 一次元配列) */ DECLARE TYPE VC_ARRAY IS TABLE OF VARCHAR2(10) NOT NULL; MY_LIST VC_ARRAY; ARRAY_LEN NUMBER(10) DEFAULT 100; BEGIN MY_LIST := VC_ARRAY(); -- 初期化 MY_LIST.EXTEND(ARRAY_LEN); -- 配列の個数を宣言、初期化 -- 値セット MY_LIST(1) := 'AAA'; MY_LIST(2) := 'BBB'; MY_LIST(3) := 'CCC'; DBMS_OUTPUT.PUT_LINE('1:' || MY_LIST(1)); DBMS_OUTPUT.PUT_LINE('2:' || MY_LIST(2)); DBMS_OUTPUT.PUT_LINE('3:' || MY_LIST(3)); -- メモリ解放 MY_LIST.DELETE; END; / /** * VARRAY(上限のある可変長配列) */ DECLARE TYPE VC_ARRAY IS VARRAY(5) OF VARCHAR2(10) NOT NULL; MY_LIST VC_ARRAY; BEGIN MY_LIST := VC_ARRAY(); -- 初期化 MY_LIST.EXTEND(2); -- 配列を +2 個初期化 MY_LIST(1) := '111'; MY_LIST(2) := '222'; MY_LIST.EXTEND(3); -- 配列を +3 個初期化 MY_LIST(3) := '333'; MY_LIST(4) := '444'; MY_LIST(5) := '555'; DBMS_OUTPUT.PUT_LINE('1:' || MY_LIST(1)); DBMS_OUTPUT.PUT_LINE('2:' || MY_LIST(2)); DBMS_OUTPUT.PUT_LINE('3:' || MY_LIST(3)); DBMS_OUTPUT.PUT_LINE('4:' || MY_LIST(4)); DBMS_OUTPUT.PUT_LINE('5:' || MY_LIST(5)); MY_LIST.DELETE; END; /