【发布时间】:2017-10-06 05:53:52
【问题描述】:
在 db2 上使用以下语句来执行 UPSERT 操作:
MERGE INTO mytable AS mt USING (
SELECT * FROM TABLE (
VALUES
(?, ?),
(?, ?),
—- ^ repeated many times, one for each row to be upserted
)
) AS vt(id, val) ON (mt.id = vt.id)
WHEN MATCHED THEN
UPDATE SET val = vt.val
WHEN NOT MATCHED THEN
INSERT (id, val) VALUES (vt.id, vt.val)
;
每次调用此语句时,我都会插入不同数量的行。是否可以使用准备好的语句进行此调用?那会是什么样子?
【问题讨论】:
-
如果有多少?参数标记每次运行都会变化,如果参数标记的数量发生变化,您必须重新准备。我会使用 DGTT,尤其是在有大量行的情况下。是的,更多语句,但更容易扩展,因为可以动态索引 dgtt。
-
谢谢@mao。如果您想将此转换为答案,我很乐意接受。
标签: jdbc db2 prepared-statement