在某个过程中
where .....
and Src_Entity_CODE = Finance_Main_Entity_Id
(varchar2) (number)
之前这个过程一直是job调用的,没有任何问题
但今天手工写一个语句调用这个过程,发现执行后错误,进行调试时就发现这里没有自动转换。错误信息:[出错信息:ORA-01722: invalid number]请达人指点一下,这中类型转换的oracle中是如何进行的,是否和外部调用这个过程有关系??
where .....
and Src_Entity_CODE = Finance_Main_Entity_Id
(varchar2) (number)
之前这个过程一直是job调用的,没有任何问题
但今天手工写一个语句调用这个过程,发现执行后错误,进行调试时就发现这里没有自动转换。错误信息:[出错信息:ORA-01722: invalid number]请达人指点一下,这中类型转换的oracle中是如何进行的,是否和外部调用这个过程有关系??
实际的oracle内部并不进行转换。
建议通过to_char/to_number来进行显示的转换,代码编写就应该严谨。
但不建议这样做,因为会降低效率的而你的问题是在于Src_Entity_CODE有不能转换成数字的比如你的字段
Src_Entity_CODE
A10
假设Finance_Main_Entity_Id 是number=10
用
Src_Entity_CODE = Finance_Main_Entity_Id
就会出错
用
Src_Entity_CODE =to_char(Finance_Main_Entity_Id)
就不会出错
这是因为,先检测到Finance_Main_Entity_Id
是数字
所以内部会做个
to_number(Src_Entity_CODE)=Finance_Main_Entity_Id
看情况应该是这样做转换的
反正,你只要记住,不管你有没有做转换,ORACEL必定是两边变成同一类型比较的
所以最好做显性转换
你把两个换下位置看看,估计转换顺序就不一样了吧,
请问这里为什么不是将Finance_Main_Entity_Id 转换成字符型的??难道oracle编译的时候也会有左右顺序?
to_char(),to_number();