Net*_*eto 5 sql oracle plsql stored-functions
我正在寻找创建一个包,已经有一个工作程序。一步一步地研究一个函数,我遇到了一个
ORA-06575 : 包或函数 PROJECT_LENGTH 处于无效状态
错误。
这样做的目的是最终能够显示我的项目持续了多长时间,从开始日期到结束日期以月为单位。我该如何解决这个问题?
我尝试了各种不同的方法和例子。我已经检查了所有变量是否正确。
CREATE OR REPLACE FUNCTION project_length(startDate IN DATE,
endDate IN DATE) RETURN NUMBER IS
BEGIN
RETURN FLOOR(MONTHS_BETWEEN(startDate, endDate) / 12);
END;
/
Run Code Online (Sandbox Code Playgroud)
测试:
SELECT projectname, project_length(startDate,endDate)
FROM project
WHERE project_length(startDate,endDate) > 0;
Run Code Online (Sandbox Code Playgroud)
我期待一个输出,其中包含项目名称和项目长度,显示项目花费的月数
只需使用
ALTER FUNCTION project_length COMPILE;
Run Code Online (Sandbox Code Playgroud)
此问题发生在依赖对象之一上有 DDL 的情况。也许您在这个函数中有一个语句,这里没有透露,引用该表project和最近添加到表中的列project(应用于表的 DDL)
实际上,这里提供的代码中没有依赖对象。所以这个函数的代码中肯定缺少一些东西。