ORACLE 自定义函数传参问题导致的ORA-01403错误

通常情况下,函数的参数在函数体内,作为传值一般可以直接接用,但今天遇到一个问题,着实调试了几个小时,才定位原因。使用函数体内声明变量,接收参数,然后在sql中使用则一切正常。

后面测试了几番,专门建表测试,问题却无法复现,在真实场景中,问题依旧,只有更换中内部变量才正常,具体原因,不得而知。

具体如下:

1、数据情况


2、函数

create or replace function f_get_openid(p_vkid number) return varchar2 is

vOpenID t_member.open_id%type;

begin

    select open_id

    into vOpenID

    from t_member

    where vk_id=p_vkid;

    return vOpenID;

exception

    when others then

    return 'error';

end;

3、用函数查询


4、修改函数

create or replace function f_get_openid(p_vkid number) return varchar2 is

vOpenID t_member.open_id%type;

vVkID t_member.vk_id%type :=p_vkid;

begin

    select open_id

    into vOpenID

    from t_member

    where vk_id=vVkID;

    return vOpenID;

exception

    when others then

    return 'error';

end;

5、用函数查询


你可能感兴趣的:(ORACLE 自定义函数传参问题导致的ORA-01403错误)