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

ORACLE SQL リファレンス

Web oracle.se-free.com
配列で使用可能なメソッド
スポンサード リンク

メソッド一覧
特に明記してない場合は、VARRYとネストした表の両方で使用可能
メソッド 説明
EXISTS(n) インデックスnで指定されたコレクションの要素が存在するか調べる。
 存在する場合:trueを返す。(NULL要素も含む)
 存在しない場合:falseを返す。
COUNT コレクションに入っている要素数を返す。
LIMIT コレクションの最大要素数を返す。
ネストした表の場合は最大サイズが無いので、常にNULLを返す。
FIRST コレクションの最初の要素のインデックスを返す。
LAST コレクションの最後の要素のインデックスを返す。
NEXT(n) インデックスnで指定した要素の次の要素のインデックスを返す。
次の要素が無い場合、NULLを返す。
PRIOR(n) インデックスnで指定した要素の直前の要素のインデックスを返す。
直前の要素が無い場合、NULLを返す。
EXTEND コレクションの最後にNULL要素を1つ追加する
EXTEND(n) コレクションの最後にNULL要素をn個追加する
TRIM ネストした表の最後の要素を1つ削除する。
TRIM(n) ネストした表の最後からn個の要素を削除する。
DELETE ネストした表の全体を削除する。
DELETE(n) ネストした表のインデックスnの要素を削除する。
DELETE(m,n) ネストした表のインデックスmからnまでの間にある要素を全て削除する。


スポンサード リンク


例1) EXIXSTSを利用した配列のループ処理
declare

 type empno_array is table of varchar2(3);
 tep empno_array := empno_array('E01','E02','E03','E04','E05');
 ep_cnt binary_integer := 1;

begin

  -- 配列の要素が存在しなくなるまでループする
 while tep.exists(ep_cnt) loop
  dbms_output.put_line('ep:' || tep(ep_cnt));
  ep_cnt := ep_cnt + 1;
 end loop;

end;

処理結果
ep:E01
ep:E02
ep:E03
ep:E04
ep:E05


例2) COUNTを利用した配列のループ処理
declare

 type empno_array is table of varchar2(3);
 tep empno_array := empno_array('E01','E02','E03','E04','E05');

begin

 -- 配列の要素数分ループする
 for ep_cnt in 1..tep.count loop
  dbms_output.put_line('ep:' || tep(ep_cnt));
 end loop;

end;

処理結果
ep:E01
ep:E02
ep:E03
ep:E04
ep:E05


例3) FIRSTとNEXTを利用した配列のループ処理
declare

 type empno_array is table of varchar2(3);
 tep empno_array := empno_array('E01','E02','E03','E04','E05');
 ep_cnt binary_integer;

begin

 -- 配列の最初のインデックスを取得
 ep_cnt := tep.first;
 loop
  if ep_cnt is null then
   exit;
  else
   dbms_output.put_line('ep:' || tep(ep_cnt));
   -- 配列の次のインデックスを取得
   ep_cnt := tep.next(ep_cnt);
  end if;
 end loop;

end;

処理結果
ep:E01
ep:E02
ep:E03
ep:E04
ep:E05


例4) EXTENDを利用して配列に要素を追加。
 declare

    type empno_array is table of varchar2(3);
    ep empno_array := empno_array();

 begin

  -- 配列の最後にNULL要素を1つ追加する。
  ep.extend;
    -- 配列の1番目に、'E11'を代入する。
    ep(1) := 'E11';

  -- 配列の最後にNULL要素を5追加する。
  ep.extend(5);
    -- 配列の3番目に、'E33'を代入する。
    ep(3) := 'E33';

 end;


例5) TRIMを利用して配列の最後の要素を削除
declare
 type empno_array is table of varchar2(3);
 tep empno_array := empno_array('E01','E02','E03','E04','E05');

begin

 -- 配列の最後の要素を削除
 tep.trim;
 for ep_cnt in 1..tep.count loop
  dbms_output.put_line('ep1:' || tep(ep_cnt));
 end loop;

 -- 配列の最後の要素を2つ削除
 tep.trim(2);
 for ep_cnt in 1..tep.count loop
  dbms_output.put_line('ep2:' || tep(ep_cnt));
 end loop;
end;

処理結果
ep1:E01
ep1:E02
ep1:E03
ep1:E04
ep2:E01
ep2:E02


例6) DELETEを利用して指定したインデックスの配列の要素を削除
declare

 type empno_array is table of varchar2(3);
 tep empno_array := empno_array('E01','E02','E03','E04','E05');
 ep_cnt binary_integer;

begin

 -- 配列インデック4の要素を削除
 tep.delete(4);
 dbms_output.put_line('ep_count:' || tep.count);

 ep_cnt := tep.first;

 loop
  if ep_cnt is null then
   exit;
  else
   dbms_output.put_line('ep' || ep_cnt || ':' || tep(ep_cnt));
   ep_cnt := tep.next(ep_cnt);
   end if;
 end loop;
end;

処理結果
ep_count:4
ep1:E01
ep2:E02
ep3:E03
ep5:E05
※上記例で配列インデック4の要素を削除すると、配列インデックス4そのものが無くなる。

スポンサード リンク


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

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