DB2 MERGE 语句错误 [英] DB2 MERGE statement error

查看:42
本文介绍了DB2 MERGE 语句错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了以下几种变体,但我仍然遇到错误.任何解决此问题的方法.DB2 10.1(DB2 for z/OS V10)

I have tried the following with a couple of variations but I continue to get errors. Any way to get this fixed. DB2 10.1 (DB2 for z/OS V10)

为了以下

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

Error: An unexpected token "SRC" was found following "". Expected tokens may include: "(". SQLSTATE=42601

SQL 状态:42601错误代码:-104

SQLState: 42601 ErrorCode: -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

Error: The use of the reserved word "SELECT" following "" is not valid. Expected tokens may include: "VALUES". SQLSTATE=42601

SQL 状态:42601错误代码:-199

SQLState: 42601 ErrorCode: -199

推荐答案

不幸的是(我一直不明白为什么),在 DB2 for z/OS 中,您不能使用表作为 MERGE,您只能使用 VALUES 子句.此外,如果要合并多行,则必须使用 宿主变量数组,并指定数组中值的数量.

Unfortunately (and I never understood why), in DB2 for z/OS, you can't use a table as a source for the MERGE, you can only use a VALUES clause. Additionally, if you want to merge multiple rows, you have to use host variable arrays, and specify the number of values are in your array.

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

这篇关于DB2 MERGE 语句错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆