全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
云数据库 RDS 版

NVL2函数报invalid input syntax for integer错误

更新时间:2016-11-10 14:24:02

错误描述

  1. ERROR: invalid input syntax for integer: "aa"
  2. LINE 1: select nvl2('aa',1,2);
  3. ^
  4. ********** Error **********
  5. ERROR: invalid input syntax for integer: "aa"
  6. SQL state: 22P02
  7. Character: 13

解决方案

通过自行扩充一个自定义的public.nvl2即可解决数据类型问题,同时用户无需要调整原有Oracle已经开发好的程序或存储过程。

  1. create or replace function public.nvl2(p_v1 string, p_v2 anyelement, p_v3 anyelement) return anyelement as
  2. declare
  3. v_v1 int;
  4. begin
  5. IF p_v1 NOTNULL THEN
  6. v_v1=1;
  7. ELSE
  8. v_v1=null;
  9. END IF;
  10. return pg_catalog.nvl2(v_v1, p_v2, p_v3);
  11. end;
  12. select nvl2('aa',1,2); --此时运行的应该是上面新建立的public.nvl2
  13. select nvl2(100,1,2); --此时运行的应该是系统原生的pg_catalog.nvl2
  14. select nvl2(null,1,2); --此时运行的应该是系统原生的pg_catalog.nvl2
本文导读目录