ORA-00904 未定义的标识符号

本文介绍了在Oracle数据库中使用自定义函数时遇到的ORA-00904错误,该错误通常表示尝试引用的标识符未定义。通过分析错误案例,指出在调用自定义函数时必须指定包名,如`PG_MMS.GF_MMS_GET_RECEIVED_DAY`,而不是直接使用函数名。修复此问题后,正确调用函数的SQL语句应该包括包名,以确保函数能被正确识别和执行。
摘要由CSDN通过智能技术生成

执行自定义函数时,报错 ORA-00904 未定义的表示符号

在这里插入图片描述

  1. 在执行自己写的自定义函数时,报错
    1.1 字段在表中没有定义
  2. 在使用自定义函数时
    2.1 未指定自定义函数的包名

案例

  1. 自定义函数头
-- PG_MMS  为包名
CREATE OR REPLACE PACKAGE PG_MMS IS
    FUNCTION GF_MMS_GET_RECEIVED_DAY(
      P_ORDER_NO VARCHAR2,
   	 P_PART_NO VARCHAR2,
   	 P_SIZE_NO VARCHAR2,
      P_WORK_DATE VARCHAR2
      )RETURN NUMBER;
END;
  1. 自定义函数体
CREATE OR REPLACE PACKAGE BODY "PG_MMS" IS
FUNCTION GF_MMS_GET_RECEIVED_DAY(P_ORDER_NO  VARCHAR2,
                                 P_PART_NO   VARCHAR2,
                                 P_SIZE_NO   VARCHAR2,
                                 P_WORK_DATE VARCHAR2) RETURN NUMBER IS
  T_TOTAL NUMBER(6);
BEGIN
  BEGIN
   -- 放自己的sql语句
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      T_TOTAL := 0;
  END;
  RETURN T_TOTAL;
END GF_MMS_GET_RECEIVED_DAY;
END;
  1. 使用的sql
select GF_MMS_GET_RECEIVED_DAY('202105200001', '55042', '3','2021/05/31') from dual

当sql语句这样写的时候,会报ora-00904 的错误,因为没有指定包名

  1. 正确的sql
select PG_MMS.GF_MMS_GET_RECEIVED_DAY('202105200001', '55042', '3','2021/05/31') from dual
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值