mybatis一次更新两个不同的oraclesql表

deikduxw  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(396)

我正在从事springweb项目,我想同时更新两个不同表中的两列。

<update id="updatePartnerWarned" parameterType="map">
    UPDATE
           M_PARTNER
       SET
           WARNED = WARNED + 1
     WHERE
           ID = #{id}

    UPDATE
           REPORT
       SET
           ISCHECKED = 'T'
         , ISWARNED = 'T'
     WHERE
           ID = #{id}
    </update>

这是我期望的工作,但它没有。

mnemlml8

mnemlml81#

我相信在oracle(与大多数其他数据库不同)中,您不能执行这样的多个查询,因此您必须使用以下过程:

<update id="updatePartnerWarned" parameterType="map">
    {call
        declare
        begin
            UPDATE M_PARTNER SET WARNED = WARNED + 1 WHERE ID = #{id}
            UPDATE REPORT SET ISCHECKED = 'T', ISWARNED = 'T' WHERE ID = #{id}
        end
    }
</update>
64jmpszr

64jmpszr2#

将其 Package 到pl/sql匿名块中:

begin
    UPDATE
           M_PARTNER
       SET
           WARNED = WARNED + 1
     WHERE
           ID = #{id};

    UPDATE
           REPORT
       SET
           ISCHECKED = 'T'
         , ISWARNED = 'T'
     WHERE
           ID = #{id};
end;

相关问题