我尝试了以下几种变体,但仍然出现错误。有什么方法可以解决这个问题。 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
SQL状态: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”。 SQL状态=42601
SQL状态:42601
错误代码:-199
不幸的是(我一直不明白为什么),在 DB2 for z/OS 中,您不能使用表作为数据源MERGE,您只能使用 VALUES 子句。另外,如果你想合并多行,你必须使用主变量数组,并指定数组中值的数量。
MERGE INTO TRGT t
USING (VALUES (:param1, :param2) FOR :paramNumRows) s
ON (t.ACCTID=s.ACCTID)
WHEN MATCHED THEN
UPDATE SET MyFlag = 'Y'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)