执行自定义函数时,报错 ORA-00904 未定义的表示符号
- 在执行自己写的自定义函数时,报错
1.1 字段在表中没有定义 - 在使用自定义函数时
2.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;
- 自定义函数体
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;
- 使用的sql
select GF_MMS_GET_RECEIVED_DAY('202105200001', '55042', '3','2021/05/31') from dual
当sql语句这样写的时候,会报ora-00904 的错误,因为没有指定包名
- 正确的sql
select PG_MMS.GF_MMS_GET_RECEIVED_DAY('202105200001', '55042', '3','2021/05/31') from dual