【发布时间】:2020-10-26 06:21:54
【问题描述】:
我想使用合并语句从工作模式更新/插入主模式中的记录。进行合并的代码如下。
MERGE INTO ods_workday.ORGANIZATION x
USING (SELECT organization_id, organization_code, organization_type, organization_name, organization_description,
inactive, manager, leadership_role_assignee, organization_owner, supervisory_organization,
primary_site_reference, inactive_date, organization_subtype
FROM ods_workday_w.ORGANIZATION) y
ON (x.ORGANIZATION_ID = y.ORGANIZATION_ID)
WHEN MATCHED THEN
UPDATE SET x.organization_code = y.organization_code,
x.organization_type = y.organization_type,
x.organization_name = y.organization_name,
x.organization_description = y.organization_description,
x.inactive = y.inactive,
x.manager = y.manager,
x.leadership_role_assignee = y.leadership_role_assignee,
x.organization_owner = y.organization_owner,
x.supervisory_organization = y.supervisory_organization,
x.primary_site_reference = y.primary_site_reference,
x.inactive_date = y.inactive_date,
x.organization_subtype = y.organization_subtype,
x.UPDATE_TIME_STAMP = CURRENT_TIMESTAMP
WHERE x.organization_code <> y.organization_code OR
x.organization_type <> y.organization_type OR
x.organization_name <> y.organization_name OR
x.organization_description <> y.organization_description OR
x.inactive <> y.inactive OR
x.manager <> y.manager OR
x.leadership_role_assignee <> y.leadership_role_assignee OR
x.organization_owner <> y.organization_owner OR
x.supervisory_organization <> y.supervisory_organization OR
x.primary_site_reference <> y.primary_site_reference OR
x.inactive_date <> y.inactive_date OR
x.organization_subtype <> y.organization_subtype
WHEN NOT MATCHED THEN
INSERT(x.organization_id, x.organization_code, x.organization_type, x.organization_name,
x.organization_description, x.inactive, x.manager, x.leadership_role_assignee,
x.organization_owner, x.supervisory_organization, x.primary_site_reference, x.inactive_date,
x.organization_subtype, x.UPDATE_TIME_STAMP)
VALUES(y.organization_id, y.organization_code, y.organization_type, y.organization_name,
y.organization_description, y.inactive, y.manager, y.leadership_role_assignee,
y.organization_owner, y.supervisory_organization, y.primary_site_reference, y.inactive_date,
y.organization_subtype, CURRENT_TIMESTAMP);
当目标表有记录时,代码可以正常工作,但当目标表为空时(与合并相比,记录为零)。
当目标架构中没有记录可以开始时,有没有一种方法可以使合并语句起作用。
Oracle 数据库是 11g。
【问题讨论】:
标签: sql oracle11g oracle-sqldeveloper