簡體   English   中英

DB2 合並 SQL iSeries

[英]DB2 Merge SQL iSeries

我創建了這個函數來根據一行是否已經存在來更新或插入一行; 我得到的錯誤是 VAR1 不是變量。 這是我第一次在 iSeries 和 DB2 上以這種方式設置合並。 希望有人能提供幫助,感謝所有花時間這樣做的人。

function mergeRecord($var1, $var2, $var3, $var4, $var5, $var6){

db2RunSql("
        MERGE INTO schema.tableName AR
  USING (VALUES (:var1, :var2, var3, :var4, :var5, :var6)
    FOR :var1 ROWS)
    AS AC (VAR1, VAR2, VAR3, VAR4, VAR5, VAR6)
  ON (AR.VAR1 = AC.VAR1 AND AR.VAR4 = AC.VAR4 AND AR.VAR6 = AC.VAR6)
  WHEN MATCHED THEN UPDATE SET VAR1=?, VAR2=?, VAR3=?, VAR4=?, VAR5=?, VAR6=?
  WHEN NOT MATCHED THEN INSERT (:var1, :var2, :var3, :var4, :var5, :var6)
     VALUES (?, ?, ?, ?, ?, ?)",
        array($var1, $var2, $var3, $var4, $var5, $var6)
    );
}

也許你正在尋找這樣的東西:

function mergeRecord($var1, $var2, $var3, $var4, $var5, $var6){

db2RunSql("
  MERGE INTO schema.tableName AR
    USING (VALUES (?, ?, ?, ?, ?, ?))
      AS AC (VAR1, VAR2, VAR3, VAR4, VAR5, VAR6)
    ON (ar.var1, ar.var4, ar.var6) = (ac.var1, ac.var4, ac.var6)
  WHEN MATCHED THEN 
    UPDATE SET (ar.var2, ar.var3, ar.var5) = (ac.var2, ac.var2, ac.var5)
  WHEN NOT MATCHED THEN 
    INSERT VALUES (ac.var1, ac.var2, ac.var3, ac.var4, ac.var5, ac.var6)",
        array($var1, $var2, $var3, $var4, $var5, $var6)
    );
}

我認為當您可以簡單地使用源 (USING) 表中的列作為更新或插入值時,您正試圖在示例中插入太多參數標記。

注意:這只是一個猜測,因為我不確定db2RunSql()作用。 它不是標准函數,您還沒有提供它的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM