Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无效属性的db2合并错误_Sql_Merge_Db2 - Fatal编程技术网

Sql 无效属性的db2合并错误

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语句在db2中执行UPSERTS

我认为结构是正确的,但问题是我得到了错误

sqlstate[42000]语法或访问冲突:属性无效

我不确定问题到底在哪里,因为它不是很明确,但它似乎是来自我的一个价值观

合并:

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解决了它!谢谢你的帮助!