2017-12-21 10 views
0

私のプロジェクトには、以下に書かれたコードがあります。私は以下のコードで.deleteが何をするのか理解しようとしています。カーソル変数.deleteとは何ですか?

CURSOR cur_somecur IS 
select * from SomeTable; 

TYPE my_cur_ty IS TABLE OF MyTable%ROWTYPE INDEX BY BINARY_INTEGER; 
my_cur  my_cur_ty; 

FETCH cur_somecur BULK COLLECT 
INTO my_cur LIMIT 1000; 

... 

LOOP 

FORALL idx IN 1 .. my_cur.count SAVE EXCEPTIONS /* This is understood */ 

... 
my_cur.delete; /* What does this do ? */ 

END LOOP; 
... 
+0

'delete'はカーソル変数ではありません。あなたの場合、コレクション全体を削除するコレクションメソッドです: 'my_cur' –

+0

コードの最後にDELETEを使用しないとどうなりますか?いくつかのメモリをクリアするためにDELETEが使用されていますか?ちょうど推測 – user2488578

+0

'my_cur'はコレクション(配列)です。名前は誤解を招きます。なぜなら、それはカーソルとは何か関係があり、そうではないことを示唆しているからです。通常、PL/SQLで変数を削除する必要はありません(独自の[ガベージ・コレクション](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science))。 –

答えて

0

このように使用されると、すべての要素がMY_CURコレクションから削除されます。

Collection methods

この手順では、3つの形式があります。 DELETEは、 コレクションからすべての要素を削除します。 DELETE(n)は、配列の配列またはネストした表からn番目の要素を削除します。 nがNULLの場合、DELETE(n)は何もしません。 DELETE(m、n)は、配列の配列またはネストした表から範囲m..nのすべての要素を削除します。 mがnより大きい場合、またはmまたはnがNULLの場合、 DELETE(m、n)は何もしません。

+0

コードの最後にDELETEを使用しないとどうなりますか?いくつかのメモリをクリアするためにDELETEが使用されていますか?ちょっと推測してください。 – user2488578

+0

"Oracle PL/SQL Collection memory reclaim"をご覧ください。http://ksun-oracle.blogspot.hr/2013/06/oracle-plsql-collection-memory-reclaim.html。さまざまなシナリオを示し、何が起こっているのかを説明します。 – Littlefoot

+0

ありがとう................ – user2488578

関連する問題