我有一个表,其中一个列作为嵌套表。
我想将此表的数据复制到另一个。我们如何为此构建 INSERT 子句似乎具有挑战性:
考虑。作为嵌套表的字段是phone_list,其类型是用户定义类型“TBL_PHONE_EXTN”,它是“typ_phone_extn”的表。
CREATE OR REPLACE TYPE typ_phone_extn AS OBJECT
(phone_number VARCHAR2 (20), extension VARCHAR2 (10));
/
CREATE OR REPLACE TYPE tbl_phone_extn AS TABLE OF typ_phone_extn;
/
显然以下失败:(带有 ORA-00904: : 无效标识符)
INSERT INTO sch2.sub_pat_address (
pat_address_id,
pat_id,
**phone_list,**
last_updated_by
)
SELECT pat_address_id,
pat_id,
**phone_list,**
last_updated_by
FROM sch1.sub_pat_address ;
所以我尝试:
SELECT pat_address_id,
pat_id,
**tbl_phone_extn(typ_phone_extn (phone_number,extension)),**
last_updated_by
FROM sch1.sub_pat_address, **table(phone_list)** ;
这样做是取消嵌套嵌套表。所以我最终得到了比我想要的更多的记录——这意味着如果一个特定的 pat_address_id 有一个包含 5 个电话的 phone_list,extn 组合这给了我 5 个我不能也不应该插入的记录。
所以问题是,如何保持嵌套(嵌套表列)原样并插入到新表中?好吧,CTAS 可能是一种选择,但这需要一个全新的表而不是 INSERT。任何帮助将不胜感激。