有这么一段sql,从传入参数CreateDTO 取effectDate属性,从yyy表取zzz属性,插入xxxx_table表。
<insert id="genZeroGrpInterestTraceByGrpNo" parameterClass="com.cmrh.gnc.healthacc.dto.CreateDTO" >insert into xxxxx_table (SETTLE_BILL_DATE,zzzz)select TO_DATE(#effectDate#,'yyyy-mm-dd hh24:mi:ss'),zzzz from yyy_table
</insert>
在工程内执行的时候,报错提示 ORA-01858: a non-numeric character was found where a numeric was expected
直接把sql里面的变量替换,执行,没有报错(这个错误一些其他情况可以通过此方式排除)。怀疑是传值的问题。
再看下CreateDTO的effectDate属性,变量类型为Date,瞬间明白,这里不需要TO_DATE做转换。
把sql中转换effecdate属性的todate操作去掉,问题解决。
insert into xxxxx_table (SETTLE_BILL_DATE,zzzz)
select #effectDate#,zzzz from yyy_table
以上是本人在今晚实际遇到的问题,时间比较紧,写的比较粗糙