【发布时间】:2018-02-24 19:43:22
【问题描述】:
我创建了这个函数来根据一行是否已经存在来更新或插入一行;我得到的错误是 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)
);
}
【问题讨论】:
-
:var1, :var2, ...中的冒号看起来像是在尝试将 SQL 嵌入到像RPG这样的高级语言中。$v ar1, $var2, ...形式的 php 标记和变量看起来像是在谈论 PHP。而且我在任何文档中都找不到db2RunSql()。那么你想做什么,什么语言。如果是 PHP,您使用的是哪个数据库扩展?db2RunSql()是如何定义的? -
您是否正在假设 PDO 并混合使用命名参数和传统的
?参数标记?