3

Oracleのステートメントを使用して、INSERT ALLデータを 2 つの異なるテーブルに挿入しています。VALUESデータは、句ではなくかなり複雑なサブクエリから取得されます。

私の問題は、サブクエリによって返されたすべての列を両方のテーブルに挿入したくないということです。

簡単な例として、2 つのテーブルがtab1あり、それぞれにとtab2の 3 つの列が含まれているとします。col1col2col3

ここで、サブクエリが と の値を持つ単一の行を返すとABますC

だから、 と を と の にそれぞれ挿入したいのですが、ABだけをとのに入れたいのです。Ccol1col2col3tab1ACcol1col3tab2

私のステートメントは次のようになります。

INSERT ALL
INTO tab1
  (col1, col2, col3)
INTO tab2
  (col1, ?, col3)
FROM
( ...
 complex subquery which returns A, B, C
  ...
)

ある種の「フィラー」または「ガベージカラム」を使用して目的を達成できる方法はありますか?

4

2 に答える 2

9

はい:

INSERT ALL
INTO tab1
  (col1, col2, col3) values (a, b, c)
INTO tab2
  (col1, col3) values (a, c)
SELECT a, b, c
FROM
( ...
 complex subquery which returns A, B, C
  ...
)
于 2012-04-10T17:11:23.667 に答える
2

この構文は可能です

INSERT ALL
INTO ap_cust(f1, f2) VALUES (a, d)
INTO ap_orders(f1, f2, f3) VALUES (a, b, c)
SELECT a, b, c,d
FROM table;

http://psoug.org/reference/insert.htmlを参照

于 2012-04-10T17:44:33.950 に答える