我发现了许多示例,展示了如何使用嵌套表列创建表以及如何“手动”更新它们,如步骤 1-5 中所述。
我想做的是:直接/自动从数据库中的其他表(具有相同结构的NEW_TBL-)更新嵌套表列(示例中的“cust_info”),而不是手动输入一个接一个的值。
(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)的数据 )我尝试使用批量收集但没有成功。
谢谢克伦