|
 |
|
|
配列で使用可能なメソッド |
|
スポンサード リンク
メソッド一覧
特に明記してない場合は、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そのものが無くなる。
スポンサード リンク
|
|
|
|
|