在 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 中进行合并时值不兼容的主要内容,如果未能解决你的问题,请参考以下文章
Rails - 传递给 #or 的关系必须在结构上兼容。不兼容的值:[:joins]
Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oraclesqlserverDB2人大金仓达梦PG瀚高polardb