在 DB2 中进行合并时值不兼容

Posted

技术标签:

【中文标题】在 DB2 中进行合并时值不兼容【英文标题】:Value not compatible when doing merge in DB2 【发布时间】:2019-01-24 14:09:41 【问题描述】:

我正在尝试基于 php 脚本中先前选择的参数执行合并,但我收到错误“SQL0408 - 列、变量或参数 QUANTITY 的值不兼容”

在我的目标表中,QUANTITY 是数据类型 INTEGER

在我的选择查询中,我将值转换为 int(它已经在表中,我只是将所有内容都转换为安全)

cast(MAX(orqtyc) as int) AS QUANTITY,

然后在我的 MERGE 中,我将投射为 INT

MERGE INTO HNORMANTEST.PLACEMENTS AS P
        USING(VALUES(

            CAST(:QUANTITY as INT),

        ))

使用这个参数

$params = [

    ":QUANTITY" => $row["QUANTITY"],

];

为什么会说不兼容?

【问题讨论】:

MERGE 在 DB2 上的实现不一致。您使用的是luw 还是zOS 风味?特别是 VALUES() 不适用于 zOS。 我什至不确定,实际上。它在iseries上是我所知道的。我正在以与过去相同的方式实施它。合并时不要再施法会更好吗? 它在我准备合并的那一行失败了@Stavr00 【参考方案1】:

您是否通过直接输入值而不是通过参数来尝试它,看看它是否有效。

您可以尝试的另一件事是删除可能不需要的第一个铸件。正如你所说,QUANTITY 已经是一个 INT 数据类型。

请尝试两种变体。如果两种变体都给出相同的错误,则可能存在一些产品限制/错误。

您需要传递您尝试进一步查看的 DB2 版本。

【讨论】:

以上是关于在 DB2 中进行合并时值不兼容的主要内容,如果未能解决你的问题,请参考以下文章

不兼容的类型不允许在 JOOQ dsl 中合并子查询

Rails - 传递给 #or 的关系必须在结构上兼容。不兼容的值:[:joins]

DB2 - 啥是 NF(新功能)模式?

xls 单元格格式和公式不兼容

Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oraclesqlserverDB2人大金仓达梦PG瀚高polardb

FreeMYbatisTool本地插件不兼容怎么办