0

forall一括収集ステートメントの使用法と必要性を理解したいです。

ここで言及されている例

異なる Web ページのほとんどの例では、作成者はまず、一括収集ステートメントを使用してテーブルからデータをフェッチします。その後、forallステートメントを使用してターゲットテーブルに挿入しています。

DECLARE
TYPE prod_tab IS TABLE OF products%ROWTYPE;
products_tab   prod_tab := prod_tab();
 BEGIN
-- Populate a collection - 100000 rows
SELECT * BULK COLLECT INTO products_tab FROM source_products;

FORALL i in products_tab.first .. products_tab.last
 INSERT INTO target_products VALUES products_tab(i);

しかし、いつこの方法を選択すべきかわかりません。以下のようなコードが書けると思います。

INSERT INTO target_products
SELECT * FROM SOURCE_PRODUCTS;

そして、selectステートメントに挿入すると、パフォーマンスが向上すると思います。

では、なぜ一括収集forallステートメントを選択する必要があるのでしょうか? エラーログやその他の利点はありますか?

4

3 に答える 3

0

一括収集と forall の使用に関する素晴らしい記事を次に示します。

http://www.oracle.com/technetwork/issue-archive/2012/12-sep/o52plsql-1709862.html

于 2013-06-13T12:46:37.283 に答える