首页 > 数据库 > mysql教程 > 如何使用 MERGE 在 Oracle 中执行更新插入操作?

如何使用 MERGE 在 Oracle 中执行更新插入操作?

Linda Hamilton
发布: 2025-01-20 21:41:12
原创
871 人浏览过

How to Perform an Upsert Operation in Oracle Using MERGE?

Oracle Upsert:高效更新或插入数据

问题:

如何在 Oracle 中执行更新插入操作 - 如果存在则更新记录,如果不存在则插入新记录?

解决方案:MERGE声明

Oracle 没有专用的 UPSERT 命令。 MERGE 语句提供了此功能。 它根据连接条件有效地组合更新和插入操作。

说明性示例

此示例展示了在存储过程中使用 MERGE 语句进行更新插入:

<code class="language-sql">CREATE OR REPLACE PROCEDURE upsert_data (p_id NUMBER, p_value NUMBER)
AS
BEGIN
  MERGE INTO my_table target
  USING dual source
  ON (target.id = p_id)
  WHEN MATCHED THEN
    UPDATE SET target.value = p_value
  WHEN NOT MATCHED THEN
    INSERT (id, value) VALUES (p_id, p_value);
END;
/

-- Sample usage and verification
CREATE TABLE my_table (id NUMBER PRIMARY KEY, value NUMBER);

BEGIN
  upsert_data(1, 10);
  upsert_data(1, 20);  -- Update existing row
  upsert_data(2, 30);  -- Insert new row
END;
/

SELECT * FROM my_table;</code>
登录后复制

这个过程upsert_data采用一个ID和一个值。 MERGE 语句将提供的 p_idmy_table 中的现有 ID 进行比较。

  • WHEN MATCHED:如果找到匹配项,value 列将更新为 p_value
  • WHEN NOT MATCHED:如果未找到匹配项,则使用给定的 p_idp_value 插入新行。

最后的 SELECT 语句演示了组合的更新和插入结果。 这种方法非常高效,并且无需使用带有条件检查的单独 UPDATEINSERT 语句。

以上是如何使用 MERGE 在 Oracle 中执行更新插入操作?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板