首頁 > 資料庫 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板