seeleongfang 2017-11-29 02:12 采纳率: 0%
浏览 1215

oracle 自定义函数 异常

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;
代码 如上。
现在我的一个存存储过程需要调用此函数,有传入参数可能查不到,大部分可以查到,可是 我设置返回空值了啊,为什么还会报异常呢?

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 09:51
    关注

    参考GPT和自己的思路:

    根据你提供的信息,可能是因为当函数无法查到相应的数据时,它返回的是空字符串而不是 null 值。所以在存储过程中调用该函数时,如果传入的参数查不到数据,函数返回的空字符串无法赋值给存储过程中的变量,导致异常。为了解决这个问题,你可以使用 COALESCE 函数将空字符串转换为 null 值,如下所示:

    SELECT COALESCE(F_GETNAME(P_KIND, P_CODE), NULL) INTO V_NAME FROM DUAL;

    通过这种方式,即使函数返回空字符串,也能正确地赋值给变量。希望这个答复能够帮到你。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器