2012-04-19 22 views
7

私のOracleインスタンスにはいくつかのパッケージがあります。データベースをゼロから再作成すると、無効なオブジェクトがゼロになり、liquibaseからの警告は表示されません。その後Oracle 10gでは、パッケージ本体にエラーがあると主張しています。

、私はパッケージメソッドを呼び出し、そのよう:

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から呼び出すと、正常に動作します。

+0

JavaとSQLDeveloperの同じアカウントを使用して実行していますか? –

+0

はい。両方のアカウントは同じです。違いがないように、私はシステムとしてログインし、 'show errors package ETPDEV.CALENDAR_MANAGEMENT'も実行しました。エラーはありません。 –

+3

あなたは両方のアカウントが同じだと言っていますが、どちらも同じユーザーとしてログインしていますか?これは古典的な権限の問題のようです。 – Ollie

答えて

2

統合チェックでこのエラーが発生しましたが、実行中にパッケージの有効性を確認するとは思われませんでした。

select name || ' - ' || line || ' - ' || text from user_errors order by name, sequence; 

私はDBを見たときにそう、異なるテストは、それ自体の後にクリーンアップされなかったが、この1つはであることがわかった:右のパッケージのための呼び出しの前にコードの単純なビットを削除

前と後、それは上品に見えました。

関連する問題