DB2 Merge SQL iSeries

时间:2018-02-24 19:43:22

标签: php sql db2-400

我创建了这个函数,根据行是否已存在来更新或插入行;我得到的错误是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)
    );
}

1 个答案:

答案 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) ); } 是做什么的。它不是标准函数,您没有提供它的定义。