[英]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.