微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Oracle中的合并中添加两个if语句

如何解决如何在Oracle中的合并中添加两个if语句

如果键不在表中,我想在表中插入一行。如果键已经在表中,则我想更新该行上的两个时间戳,如下所示:

Inputs to this routine include
lEarliest = TIMESTAMP
lLatest = TIMESTAMP
BEGIN
MERGE INTO mytable
USING dual ON (id1 = ? AND ...)
WHEN NOT MATCHED THEN
INSERT (...) VALUES (...)
WHEN MATCHED THEN
UPDATE SET earliest_timestamp = lEarliest where earliest_timestamp > lEarliest;
<--------- How can I add this second if statement to the Oracle MERGE clause? --------->
UPDATE SET latest_timestamp = lLatest where latest_timestamp < lLatest;
END;
/

解决方法

earliest_timestamp > lEarliest

通过这种方式,例如,如果latest_timestamp >= lLatestearilest_timestamplatest_timestamp将根据需要进行更新,而asnwers将对其进行更新。

这甚至不是“额外工作”,因为“额外工作”是由必须更新的整个行引起的(因此,“更新”未更改任何值的行不是一个好主意);在这种情况下,由于至少其中一个值发生了更改,因此整个都会更新。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。