错误描述
- [backcolor=transparent]ERROR[backcolor=transparent]:[backcolor=transparent] invalid input syntax [backcolor=transparent]for[backcolor=transparent] integer[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"aa"
- [backcolor=transparent]LINE [backcolor=transparent]1[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]select[backcolor=transparent] nvl2[backcolor=transparent]([backcolor=transparent]'aa'[backcolor=transparent],[backcolor=transparent]1[backcolor=transparent],[backcolor=transparent]2[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]^
- [backcolor=transparent]**********[backcolor=transparent] [backcolor=transparent]Error[backcolor=transparent] [backcolor=transparent]**********
- [backcolor=transparent]ERROR[backcolor=transparent]:[backcolor=transparent] invalid input syntax [backcolor=transparent]for[backcolor=transparent] integer[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"aa"
- [backcolor=transparent]SQL state[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]22P02
- [backcolor=transparent]Character[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]13
解决方案
通过自行扩充一个自定义的public.nvl2即可解决数据类型问题,同时用户无需要调整原有Oracle已经开发好的程序或存储过程。
- [backcolor=transparent]create [backcolor=transparent]or[backcolor=transparent] replace [backcolor=transparent]function[backcolor=transparent] [backcolor=transparent]public[backcolor=transparent].[backcolor=transparent]nvl2[backcolor=transparent]([backcolor=transparent]p_v1 [backcolor=transparent]string[backcolor=transparent],[backcolor=transparent] p_v2 anyelement[backcolor=transparent],[backcolor=transparent] p_v3 anyelement[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] anyelement [backcolor=transparent]as
- [backcolor=transparent]declare
- [backcolor=transparent] v_v1 [backcolor=transparent]int[backcolor=transparent];
- [backcolor=transparent]begin
- [backcolor=transparent] IF p_v1 NOTNULL THEN
- [backcolor=transparent] v_v1[backcolor=transparent]=[backcolor=transparent]1[backcolor=transparent];
- [backcolor=transparent] ELSE
- [backcolor=transparent] v_v1[backcolor=transparent]=[backcolor=transparent]null[backcolor=transparent];[backcolor=transparent]
- [backcolor=transparent] [backcolor=transparent]END[backcolor=transparent] IF[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] pg_catalog[backcolor=transparent].[backcolor=transparent]nvl2[backcolor=transparent]([backcolor=transparent]v_v1[backcolor=transparent],[backcolor=transparent] p_v2[backcolor=transparent],[backcolor=transparent] p_v3[backcolor=transparent]);
- [backcolor=transparent]end[backcolor=transparent];
- [backcolor=transparent]select[backcolor=transparent] nvl2[backcolor=transparent]([backcolor=transparent]'aa'[backcolor=transparent],[backcolor=transparent]1[backcolor=transparent],[backcolor=transparent]2[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]--此时运行的应该是上面新建立的[backcolor=transparent]public[backcolor=transparent].[backcolor=transparent]nvl2
- [backcolor=transparent]select[backcolor=transparent] nvl2[backcolor=transparent]([backcolor=transparent]100[backcolor=transparent],[backcolor=transparent]1[backcolor=transparent],[backcolor=transparent]2[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]--此时运行的应该是系统原生的[backcolor=transparent]pg_catalog[backcolor=transparent].[backcolor=transparent]nvl2
- [backcolor=transparent]select[backcolor=transparent] nvl2[backcolor=transparent]([backcolor=transparent]null[backcolor=transparent],[backcolor=transparent]1[backcolor=transparent],[backcolor=transparent]2[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]--此时运行的应该是系统原生的[backcolor=transparent]pg_catalog[backcolor=transparent].[backcolor=transparent]nvl2