oracle 批量插入语句

常规sql写法

INSERT ALL
  INTO t (a,b) VALUES (1,2)
  INTO t (a,b) VALUES (3,4)
SELECT 1 FROM DUAL;

mybatis foreach 写法

<insert id="batchInsert">
    INSERT ALL
    <foreach collection="list" item="item">
        INTO A (
            ID,
            S_NUM,
            OPER_USER,
            OPER_DT,
            INSERT_DT
        ) VALUES (
            #{item.id},
            #{item.sNum},
            #{item.operUser},
            #{item.openDt},
            #{item.insertDt}
        )
    </foreach>
    SELECT 1 FROM DUAL
</insert>

使用oracle序列写法

<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO A(
        ID,
        S_NUM,
        OPER_USER,
        OPER_DT,
        INSERT_DT
    )
    SELECT 
        SEQ_A.NEXTVAL,
        t.s_num,
        t.oper_user,
        t.oper_dt,
        t.insert_dt
    FROM (
        <foreach collection="list" item="item" separator=" UNION ALL ">
            SELECT 
                #{item.sNum, jdbcType=INTEGER} AS s_num,
                #{item.operUser, jdbcType=VARCHAR} AS oper_user,
                #{item.openDt, jdbcType=DATE} AS oper_dt,
                #{item.insertDt, jdbcType=DATE} AS insert_dt
            FROM DUAL
        </foreach>
    ) t
</insert>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值