帮同事测试一个审批流程,当获取当前登录用户的代办任务时,数据库报错提示【ora-01722 无效数字】,由于底层查询都已经封装好了,我们都是调用的同一个查询方法,但他的却报错。根据提示信息,修改sql语句,将 in 中使用的(id)值加上了引号变为字符串后,该sql执行未报错,当时以为是底层代码封装有问题,导致在某种情况下就会出现这样的问题,但在分析原因的过程中偶然发现在某一业务类型下该参数保存的值是字符串而非数字,其他业务类型下我们在该参数中保存的都是数字,修改代码将该参数保存的值调整为数字,问题解决。
act_ru_task 中的 assignee_ 字段类型为varchar,当该字段存储的值为数字(如:1)时,可以将查询条件写成 assignee_ in (1),而当该字段存储的值为字符串(如:张飞)时,若将查询条件写成 assignee_ in (1),数据库就会提示 无效数字