CREATE OR REPLACE FUNCTION F_GETNAME(P_KIND IN VARCHAR2,P_CODE IN VARCHAR2)
RETURN VARCHAR2 IS
V_NAME ZM_CODE_DETAIL.NAME_DETAIL%TYPE;
BEGIN
select nvl(d.NAME_DETAIL,'') INTO V_NAME from ZM_CODE_DETAIL d
where D.ID_MASTER =P_KIND
and d.code_detail=P_CODE;
RETURN nvl(V_NAME,'');
END F_GETNAME;
代码 如上。
现在我的一个存存储过程需要调用此函数,有传入参数可能查不到,大部分可以查到,可是 我设置返回空值了啊,为什么还会报异常呢?
参考GPT和自己的思路:
根据你提供的信息,可能是因为当函数无法查到相应的数据时,它返回的是空字符串而不是 null 值。所以在存储过程中调用该函数时,如果传入的参数查不到数据,函数返回的空字符串无法赋值给存储过程中的变量,导致异常。为了解决这个问题,你可以使用 COALESCE 函数将空字符串转换为 null 值,如下所示:
SELECT COALESCE(F_GETNAME(P_KIND, P_CODE), NULL) INTO V_NAME FROM DUAL;
通过这种方式,即使函数返回空字符串,也能正确地赋值给变量。希望这个答复能够帮到你。