我想用另一个关键字替换一个脚本中所有INSERT实例,这些关键字将更新数据而不是插入数据。通过mySQL,我可以使用UPSERT或REPLACE。但是对于Oracle,我不能使用MERGE,因为MERGE语法更加复杂,所以我不能只更改一个关键字。有什么主意吗?+
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- would become :
UPSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
答案 0 :(得分:1)
恐怕您无法做到这一点,即仅用INSERT
搜索/替换MERGE
并期望它能正常工作。不会,因为语法将是错误的。正如您已经注意到的,MERGE
比纯INSERT
和/或UPDATE
更复杂,所以……您真不走运。
但是,如果您愿意编写更多代码(完全重写您目前拥有的INSERT
s),那可以,但是需要一些努力。
答案 1 :(得分:0)
IF 都引用同一张表,并且列名都以相同的顺序排列,因此您可以将其更改为调用存储过程,从而摆脱困境
call upsert_proc(value1,value2,value3,...);
您必须对该过程进行编码以进行合并,或者使用异常处理程序进行插入以进行更新。