如何修复ORA-06575:程序包或函数处于无效状态错误

时间:2019-01-03 17:12:25

标签: sql oracle plsql

我正在寻找一个包装,已经有一个正常的程序。逐步处理某个函数,我遇到了“ 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;   
/

测试

SELECT  projectname, project_length(startDate,endDate)  
FROM project 
WHERE project_length(startDate,endDate) > 0; 

我希望输出的结果将由projectName和Project Length组成,显示项目花费的月数

1 个答案:

答案 0 :(得分:2)

只需使用

alter function project_length compile;

发生此问题,其中一个从属对象获得了DDL。也许您在此函数中有一条语句,此处未显示,它引用了表project,最近又在表project中添加了一列(

实际上,此处显示的代码中没有依赖对象。因此,该函数的代码中一定缺少某些东西。