通常情况下,函数的参数在函数体内,作为传值一般可以直接接用,但今天遇到一个问题,着实调试了几个小时,才定位原因。使用函数体内声明变量,接收参数,然后在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、用函数查询

网友评论