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;結束; /' ' –