我创建了这个函数,根据行是否已存在来更新或插入行;我得到的错误是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)
);
}
答案 0 :(得分:0)
也许你正在寻找这样的东西:
<Button.ContextMenu>
<ContextMenu x:Name="notifTileContextMenu">
<MenuItem Name="***" Command="{Binding Path=***}" Header="{Resx ResxName=***, Key=***}"/>
<MenuItem Name="***" Header="{Resx ResxName=***, Key=***}"/>
<Separator/>
<MenuItem Name="mItemOpenPort" Header="{Resx ResxName=***, Key=***}" ItemsSource="{Binding Path=ComPortItems}"/>
</ContextMenu>
</Button.ContextMenu>
我认为您只是在源(USING)表中使用列作为更新或插入值时,尝试在示例中插入太多参数标记。
注意:这只是猜测,因为我不确定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)
);
}
是做什么的。它不是标准函数,您没有提供它的定义。