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 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败