ネストされたテーブル列を含むテーブルを作成する方法と、手順 1 ~ 5 で説明したようにそれらを「手動で」更新する方法を示す多くの例を見つけました。
私がしたいこと: ネストされたテーブルの列 (例では「cust_info」) を、データベース内の他のテーブル (同じ構造を持つ NEW_TBL-) から直接/自動的に更新し、値を次々に手動で入力しないようにします。
(1) オブジェクトの作成:
CREATE TYPE TEST_OBJECT_T AS OBJECT
(
x NUMBER,
y NUMBER
);
(2) コレクションの作成:
CREATE TYPE TEST_OBJ_TBL IS TABLE OF TEST_OBJECT_T;
(3) 表の列をネストした表の作成
create table aaaTable
(
CUSTID number,
cust_info TEST_OBJ_TBL
)
NESTED TABLE cust_info STORE AS xx_tbl
;
(4) -- データを挿入
insert into AAATABLE
VALUES (1,TEST_OBJ_TBL(
TEST_OBJECT_T(33,77),
TEST_OBJECT_T(66,67),
TEST_OBJECT_T(320,999)
)
);
++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++
insert into AAATABLE
VALUES (2,TEST_OBJ_TBL(
TEST_OBJECT_T(444,555),
TEST_OBJECT_T(333,67),
TEST_OBJECT_T(111,978)
)
);
(5) クエリ 2 結果を見る
select T1.custid ,T2.*
from AAATABLE T1 , table(T1. CUST_INFO) T2;
results :
CUSTID X Y
---------- ---------- ----------
1 33 77
1 66 67
1 320 999
2 444 555
2 333 67
2 111 978
(6) ネストした表の列を更新するためのデータソースとなる新しい表を作成します)
create table new_tbl
(
X1 NUMBER,
Y1 NUMBER
);
(7) 新しいテーブルにデータを挿入する
insert into NEW_TBL values (222,444);
insert into NEW_TBL values (345,777);
insert into NEW_TBL values (867,222);
+++++++++++++++++++++++++++++++++++
select * from NEW_TBL
X 1 Y1
---------- ----------
222 444
345 777
867 222
再度の質問: 「new_tbl」データをネストされたテーブル列 (「cust_info」) に一括で挿入できますか (つまり、ステージ 4 でデータを置き換えます TEST_OBJECT_T(33,77), TEST_OBJECT_T(66,67), TEST_OBJECT_T(320,999) )一括収集を使用しようとしましたが、成功しませんでした。
ありがとうケレン