Jon*_*tow 7 java oracle spring plsql
我的oracle实例上有一些包.当我从头开始重新创建数据库时,我得到零无效对象,并且没有来自liquibase的警告.
然后,当我调用一个包方法时,如下所示:
new SimpleJdbcCall(jdbcTemplate).withCatalogName(packageName).withProcedureName(storedProcedureName).execute(parameterMap);
它给了我以下错误:
org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [{call CALENDAR_MANAGEMENT.CREATE_SUMMARIES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]; SQL state [72000]; error code [4063]; ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1; 
nested exception is java.sql.SQLException: ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1
Caused by: java.sql.SQLException: ORA-04063: package body "ETPDEV.CALENDAR_MANAGEMENT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "ETPDEV.CALENDAR_MANAGEMENT"
ORA-06512: at line 1
再次检查无效对象没有任何结果.再次编译CALENDAR_MANAGEMENT正常完成且没有错误.
我已经尝试了完整的模式重新编译,但这不起作用.
当我从SQLDeveloper调用它时,它正常工作.
我在集成检查中遇到了这个错误,并且我没有想到在包运行时检查包的有效性。
在调用包之前删除一段简单的代码:
select name || ' - ' || line || ' - ' || text from user_errors order by name, sequence;
我发现另一个测试本身并没有清理,但这个测试是这样,所以当我查看之前和之后的数据库时,它看起来很好。