我需要在Oracle中做一个MERGE
,但我被卡住了。
在SQL Server中,我总是使用BY SOURCE
和BY TARGET
条件来检查记录的存在位置,然后执行操作。
我有点困惑,因为我不知道如何在PL / SQL中实现相同的功能。我需要在两张桌子上做MERGE
(customers
和customers_stage
)。
在SQL Server中,它看起来像这样:
MERGE INTO dbo.Customers AS target
USING dbo.Customers_stage AS source ON target.ID = source.ExternalID
WHEN NOT MATCHED BY TARGET
THEN
INSERT
WHEN MATCHED
THEN
UPDATE
WHEN NOT MATCHED BY SOURCE
THEN
DELETE
如何在Oracle中实现相同的功能?我使用SQL Developer。
非常感谢你。
它在Oracle中类似:
MERGE INTO dbo.Customers a
USING dbo.Customers_stage b
ON (a.ID = b.ExternalID)
WHEN MATCHED THEN
UPDATE SET a.col1 = b.col1
DELETE
WHERE ID not in ( select ExternalID from Customers_stage )
WHEN NOT MATCHED THEN
INSERT (ID, status)
VALUES (b.ExternalID, b.col1);