Plsql 需要帮助在oracle中实现合并语句吗

Plsql 需要帮助在oracle中实现合并语句吗,plsql,oracle10g,Plsql,Oracle10g,我计划实施合并命令,我的要求如下 如果ID匹配,则更新目标表 如果ID不匹配,请在目标表中插入一个条目。 如果ID为null,则在错误\u表中插入包含错误详细信息的条目 请让我知道下面的方法将工作或任何其他方式来处理 MERGE INTO TABLE_TRG TGT USING (SELECT SRC.* FROM TABLE_SRC SRC)SRC ON (SRC.ID = TGT.ID) WHEN MATCHED THEN UPDATE SET ( TGT.ID= SRC.ID ..

我计划实施合并命令,我的要求如下

如果ID匹配,则更新目标表 如果ID不匹配,请在目标表中插入一个条目。 如果ID为null,则在错误\u表中插入包含错误详细信息的条目

请让我知道下面的方法将工作或任何其他方式来处理

MERGE 
INTO TABLE_TRG TGT
USING
(SELECT SRC.* FROM TABLE_SRC SRC)SRC
ON (SRC.ID = TGT.ID)

WHEN  MATCHED THEN

UPDATE SET
(
TGT.ID= SRC.ID
...
)
WHEN  NOT MATCHED **and SRC.ID is not null**
THEN
INSERT
(
TGT.ID
...
)
Values
(
SRC.ID
...
)
WHEN  NOT MATCHED **and SRC.ID is null**
THEN
INSERT
(
ERROR_TABLE.ID
ERROR_TBALE.ERROR
...
)
Values
(
SRC.ID
SRC.ERROR
...
)
提前谢谢

问候
Sheik

不能从merge语句插入多个表,因此这不起作用。您希望记录什么错误?如果目标表的ID不是null,那么null值的插入将失败,您可以在插入其他所有内容时使用错误日志子句来处理这一问题;或者,您可以使用子句跳过
中没有ID的任何源记录。这真的取决于你需要什么。谢谢你的回复,如果ID匹配,我需要更新相应的记录,否则就插入到同一个表中。如果ID为null,则在另一个表(错误表)中插入详细信息以进行审计。-SheikWell,这是您的答案。如果ID为null,则在审计表中创建一个条目,否则执行Merge语句。