Sql 无效属性的db2合并错误
我使用新创建的merge语句在db2中执行UPSERTS 我认为结构是正确的,但问题是我得到了错误 sqlstate[42000]语法或访问冲突:属性无效 我不确定问题到底在哪里,因为它不是很明确,但它似乎是来自我的一个价值观 合并:Sql 无效属性的db2合并错误,sql,merge,db2,Sql,Merge,Db2,我使用新创建的merge语句在db2中执行UPSERTS 我认为结构是正确的,但问题是我得到了错误 sqlstate[42000]语法或访问冲突:属性无效 我不确定问题到底在哪里,因为它不是很明确,但它似乎是来自我的一个价值观 合并: MERGE INTO STATUS as S USING (VALUES( CAST(:ORDER as INT), CAST(:STATUS as VARCHAR),
MERGE INTO STATUS as S
USING (VALUES(
CAST(:ORDER as INT),
CAST(:STATUS as VARCHAR),
CAST(:IS_ACTIVE as DECIMAL(1,0)),
CAST(:DATE_UPDATED as DATE)
)
)
AS O(order, status, is_active, date_updated)
ON o.order = S.order_id
WHEN MATCHED THEN UPDATE SET order_status = status, is_active = is_active, date_updated = date_updated
WHEN NOT MATCHED THEN INSERT VALUES(order, status, is_active, date_updated)
DB2foriSeries手册有以下示例
MERGE INTO employee AS t
USING (VALUES(CAST(? AS CHAR(6)), CAST(? AS VARCHAR(12)),
CAST(? AS CHAR(1)), CAST(? AS VARCHAR(15)),
CAST(? AS SMALLINT), CAST(? AS INTEGER)))
s (empno, firstnme, midinit, lastname, edlevel, salary)
ON t.empno = s.empno
WHEN MATCHED THEN
UPDATE SET salary = s.salary
WHEN NOT MATCHED THEN
INSERT (empno, firstnme, midinit, lastname, edlevel, salary)
VALUES (s.empno, s.firstnme, s.midinit, s.lastname, s.edlevel,
s.salary)
也许您需要限定SET和final VALUES语句中的属性名称
例如,说is_active=is_active而不是is_active=O.is_active可能会让DB2感到困惑什么应用程序类型运行此语句?我在php for DB2 7.2中运行此语句。在PowerShell中运行命令时,请尝试将参数显式转换为相应的数据类型。像值转换一样:顺序为int,…嗯,我已经做了,现在更新了我的答案,仍然得到了它。数据类型也与实际的列数据类型匹配我这样做了,但仍然有错误,但是,添加VARCHAR45而不是仅仅添加VARCHAR解决了它!谢谢你的帮助!