DB2 MERGE语句错误

拉朱(Raju)

我尝试了以下几种变体,但仍继续出现错误。任何解决此问题的方法。DB2 10.1(用于z / OS V10的DB2)

对于以下

MERGE INTO TRGT t
USING SRC s
ON (t.ACCTID=s.ACCTID AND s.SEQID=123)
WHEN MATCHED THEN
UPDATE SET
MyFlag = 'Y'

错误:在“”之后发现意外的令牌“ SRC”。预期的令牌可能包括:“(”。SQLSTATE = 42601

SQLState:42601错误代码:-104


但是对于以下

MERGE INTO TRGT t
USING (SELECT SEQID, ACCTID FROM SRC WHERE SEQID=123) s
ON (t.ACCTID=s.ACCTID)
WHEN MATCHED THEN
UPDATE SET
MyFlag = 'Y'

错误:“”之后的保留字“ SELECT”的使用无效。预期的令牌可能包括:“ VALUES”。SQLSTATE = 42601

SQLState:42601错误代码:-199

班比

不幸的是(我从来不明白为什么),在DB2 z / OS版中,您不能使用表作为的源,而MERGE只能使用VALUES子句。另外,如果要合并多行,则必须使用主机变量array,并指定数组中值的数量。

MERGE INTO TRGT t
USING (VALUES (:param1, :param2) FOR :paramNumRows) s
   ON (t.ACCTID=s.ACCTID)
 WHEN MATCHED THEN
     UPDATE SET MyFlag = 'Y'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章