-2

こんにちは、実際に一括レコードを DB に挿入しようとしています。レコードは 20000 を超えています。これらのレコードは相互に関連しているため、3 つのテーブルにレコードを挿入する必要があります。例えば ​​:

1. One sort of data into the Table 1.
 1.1 another sort of data into the Table 2.
   1.1.1 another sort of data into the Table 3.

上記のステートメントは、ネストされた貸し手コード hereoop と見なすことができます。現在、上記のアプローチに Cursor を使用していますが、vvvv に長い時間がかかっています。あなたの貴重な提案を待っています....

4

1 に答える 1

2

発言が欲しいようですINSERT ALL。何かのようなもの

INSERT ALL
  WHEN (<<some condition>>) THEN 
    INTO table1( <<list of columns>> )
      VALUES( <<list of columns>> )
  WHEN (<<another condition>>) THEN
    INTO table2( <<list of columns>> )
      VALUES( <<list of columns>> )
  WHEN (<<third condition>>) THEN
    INTO table3( <<list of columns>> )
      VALUES( <<list of columns>> )
  SELECT <<list of columns>> 
    FROM <<source tables>>
   WHERE <<some predicates>>

最後のSELECTステートメントは、通常、カーソルを設定するために使用しているクエリです。条件は、データを挿入するテーブルを決定するためにループ内に実装するロジックを実装します。

カーソルからの行が常に 1 つのテーブルに挿入されることがわかっている場合は、最初の条件が TRUE と評価されると Oracle が条件の評価を停止できるように、 anINSERT FIRSTではなく(残りの構文は同じままです) を使用できます。INSERT ALL

于 2012-04-14T19:04:01.017 に答える