5
我需要从MyBatis中的PL/SQL块返回一个值。从PL/SQL块返回值
的PL/SQL块是这样的:
DECLARE
BEGIN
<foreach collection="params" item="param">
UPDATE PRIORITIES
SET PRIORITY = #{param.priority}
WHERE ID = #{param.id};
</foreach>
END
的原因,我需要返回一个值,就是我希望能够让受影响的行数。
我知道我能做到这一点是这样的:
<update id="updateAll" parameterType="map">
{ call
DECLARE
BEGIN
<foreach collection="params" item="param">
UPDATE PRIORITIES
SET PRIORITY = #{param.priority}
WHERE ID = #{param.id};
</foreach>
#{affected_rows, jdbcType=DECIMAL, mode=OUT} := sql%rowcount;
END
}
</update>
但这意味着我必须有这样的方法在Java映射:
public void updateAll(Map<String, String> parameters);
我有这个:
public int updateAll(@Param("params") List<PriorityModel> model);
有没有办法在没有地图的情况下返回该值?
'sql%rowcount'只在PL/SQL中可用,这不起作用。 –
问题是关于PL/SQL – maframaran
我应该说,“sql%rowcount”在SQL语句中不可用,即使该SQL语句位于PL/SQL块中。“例如,这个块不起作用:'声明v_number号;开始SELECT sql%rowcount到v_number FROM DUAL;结束; /' ' –