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 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛