DELETE Collection
Method を使用して、次のようなコレクション内のいくつかの要素を削除したいと考えています。
create or replace procedure testloop3 (clearaaa out nestedtable) as
type nestedtable is table of varchar2(255);
reply_ref_messageIds nestedtable;
getDelete_messageIds nestedtable;
begin
select distinct r.messagebox_id bulk collect into reply_ref_messageIds from reply r;
select m.id bulk collect into getDelete_messageIds from messagebox m;
getDelete_messageIds.delete(2);
getDelete_messageIds.delete(4);
getDelete_messageIds.delete(7);
getDelete_messageIds.delete(11);
getDelete_messageIds.delete(13);
for i in getDelete_messageIds.FIRST .. getDelete_messageIds.LAST loop
dbms_output.put_line(i);
end loop;
for i in 5 .. 12 loop
dbms_output.put_line(i);
end loop;
end;
次に、この手順を plsql dev でデバッグします
-- Created on 2013/4/4 by THINKPAD
declare
-- Local variables here
aa nestedtable;
begin
-- Test statements here
testloop3(aa);
end;
そして、削除前のインデックスを取得しますが、getDelete_messageIds
これは 1 から 15
です。ただし、デバッグするgetDelete_messageIds.delete(2);
と、インデックス 1 と 2 が削除されます...理由は説明できません。
そして、次のステートメントをデバッグgetDelete_messageIds.delete(4);
すると、インデックス 3 と 4 が削除されます。その後、getDelete_messageIds.delete(7);
インデックス 7 のみが削除されます...
理解できません...