【发布时间】:2017-09-14 16:40:20
【问题描述】:
我有一个暂存表 (table_B),其中的列使用嵌套表数据类型:
CREATE OR REPLACE TYPE nested_column_type AS OBJECT
(
abc_1 VARCHAR2(100),
abc_2 VARCHAR2(100),
col_id VARCHAR2(100),
tbl_id NUMBER
);
CREATE OR REPLACE TYPE nested_column_tab AS TABLE OF nested_column_type;
CREATE TABLE table_B
(col_id NUMBER,
nested_column NESTED_COLUMN_TAB)
NESTED TABLE nested_column STORE AS column_nested);
我想在 delete 语句的 where 子句中使用 nested_column,如下所示:
DELETE FROM table_A a
WHERE tbl_id = v_tbl_id
AND NOT EXISTS (SELECT col_id
FROM TABLE(SELECT b.nested_column
FROM table_B b
WHERE tbl_id = v_tbl_id)
WHERE col_id = a.col_id);
Table_A 是我的目标表。我的目标是从 table_A 中删除记录,其中 table_A.col_id 在 table_B.nested_column.col_id 和 tbl_id = v_tbl_id 中不存在。
【问题讨论】:
-
它并没有完全回答我的问题。我需要删除我的案例中的记录,为此我必须找到嵌套表列中不存在的所有记录。
-
SO 是一个很好的提问和获得答案的网站:请务必提供完整的MCVE。在您提出问题之前,请考虑talking to the duck first。是的,我是认真的!为了帮助我们帮助您,生成样本数据和预期结果。 ascii table 使输出易于阅读!您还可以模拟数据并尝试使用rextester.com 或类似站点的 SQL。几乎一切皆有可能;这是我们是否应该这样做的问题;我们不能。
-
@xQbert 更多细节已添加