oracle 表达式必须有,Oracle批量新增或插入报java.sql.SQLSyntaxErrorException: ORA-01790: 表达式必须具有与对应表达式相同的数据类型问题...

在项目开发的时候,Oracle表中的informCentralManId,informProvinceManId,informCityManId字段类型是 NUMBER,当这几个字段插入NULL的时候,就会报java.sql.SQLSyntaxErrorException: ORA-01790: 表达式必须具有与对应表达式相同的数据类型问题

原因:在mybatis中,字段没有指定类型,当为NULL的时候,可以使当字符串处理了。

处理:在对应的字段上加上 jdbcType=INTEGER

这是报错前的sql:

INSERT INTO T_INFORM_RULE(

id,

foreign_key,

threshold_grade,

alarm_frequency,

inform_way,

inform_central_man_id,

inform_province_man_id,

inform_city_man_id,

business_key,

created_by,

created_time,

updated_by,

updated_time

)

select TIR_ID_SEQ.NEXTVAL,cd.* from(

select

#{item.foreignKey},

#{item.thresholdGrade},

#{item.alarmFrequency},

#{item.informWay},

#{item.informCentralManId},

#{item.informProvinceManId},

#{item.informCityManId},

#{item.businessKey},

#{item.createdBy},

#{item.createdTime},

#{item.updatedBy},

#{item.updatedTime}

from dual

) cd

修复后的sql:

INSERT INTO T_INFORM_RULE(

id,

foreign_key,

threshold_grade,

alarm_frequency,

inform_way,

inform_central_man_id,

inform_province_man_id,

inform_city_man_id,

business_key,

created_by,

created_time,

updated_by,

updated_time

)

select TIR_ID_SEQ.NEXTVAL,cd.* from(

select

#{item.foreignKey},

#{item.thresholdGrade},

#{item.alarmFrequency},

#{item.informWay},

#{item.informCentralManId,jdbcType=INTEGER},

#{item.informProvinceManId,jdbcType=INTEGER},

#{item.informCityManId,jdbcType=INTEGER},

#{item.businessKey},

#{item.createdBy},

#{item.createdTime},

#{item.updatedBy},

#{item.updatedTime}

from dual

) cd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值