update AC_PICK ap set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{quantity}, ap.RECEIVE_TIME = #{receiveTime}, ap.IS_FREE_MAIL = 1, ap.PK_POSTAGE = #{pkPostage}, ap.PK_POSTAGE = 0, ap.pk_modified = #{pkModified}, ap.modified_time = sysdate where ap.del_flag = 0 and ap.PICK_TYPE = #{pickType} and ap.PK_BASE_CONFIG = #{pkBaseConfig} and ap.PK_DATA_ID = #{pkDataId} and ap.PK_MEMBER = #{pkMember} and ap.USABLE_QUANTITY + #{quantity} > 0 update ac_pick ap set ap.modified_time = sysdate, ap.pk_modified = #{pkModified}, ap.usable_quantity = ap.usable_quantity - #{quantity} where ap.del_flag = 0 and ap.pk_member = #{pkMember} and ap.pick_type = #{pickType} and ap.pk_base_config = #{pkBaseConfig} and ap.pk_data_id = #{pkDataId} and ap.usable_quantity - #{quantity} >= 0 update AC_PICK ap set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{acPick.usableQuantity}, ap.receive_time = #{acPick.receiveTime}, ap.is_free_mail = #{acPick.isFreeMail}, ap.pk_postage = #{acPick.pkPostage}, ap.pk_postage = null, ap.BASE_QUANTITY = #{acPick.baseQuantity}, ap.pk_modified = #{acPick.pkModified}, ap.modified_time = sysdate where ap.del_flag = 0 and ap.PK_ID = #{acPick.pkId} update AC_PICK ap set ap.del_flag = 1, ap.pk_modified = #{acPick.pkModified}, ap.modified_time = sysdate where ap.del_flag = 0 and ap.PK_ID = #{acPick.pkId} merge into AC_PICK ap using ( select #{items.pkMember} pk_member, #{items.pickType} pick_type, #{items.pkDataId} pk_data_id, #{items.specsName} specs_name, #{items.specsNameId} specs_name_id, #{items.usableQuantity} usable_quantity, #{items.baseQuantity} base_quantity, #{items.pkCreator} pk_creator from dual ) tmp on (tmp.pk_member = ap.pk_member and tmp.pick_type = ap.pick_type and tmp.pk_data_id = ap.pk_data_id and tmp.specs_name = ap.specs_name and ap.specs_name_id = ap.specs_name_id and tmp.base_quantity = ap.base_quantity) WHEN NOT MATCHED THEN insert (pk_id, pk_member, pick_type, pk_data_id, specs_name, specs_name_id, usable_quantity, pk_creator, base_quantity) values (ac_pick_seq.nextval, tmp.pk_member, tmp.pick_type, tmp.pk_data_id, tmp.specs_name, tmp.specs_name_id, tmp.usable_quantity, tmp.pk_creator, tmp.base_quantity) WHEN MATCHED THEN update set ap.usable_quantity = ap.usable_quantity + tmp.usable_quantity update ac_pick ap set ap.usable_quantity = ap.usable_quantity + #{quantity}, ap.used_quantity = ap.used_quantity - #{quantity}, ap.modified_time = sysdate where ap.del_flag = 0 and ap.pk_member = #{pkMember} and ap.pk_id = #{pkId} and ap.usable_quantity + #{quantity} >= 0