改法二,一条 insert 语句,value 通过 union all 连接(未经验证,根据详见中回答的评论,会出现语法错误):
<insert id="insertTest" parameterType="list">
INSERT INTO pd_test.cfg_sync_exclude_databases(db)
WITH dual as (SELECT 1 as x)
<foreach collection="list" item="item" separator="UNION ALL">
SELECT #{item.db} as db FROM dual
</foreach>
</insert>
应该这样使用
foreach
标签的本质是循环拼接,你之前用法拼接就会成为(db),(db)
这样的结果。更新
Teradata 不支持这样使用。
应当改成多请求语句(MSR)
改法一,直接生成多条 insert 语句:
改法二,一条 insert 语句,value 通过
union all
连接(未经验证,根据详见中回答的评论,会出现语法错误):上面写法未经测试,可能有些小问题,但是思路是正确的。