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