Tôi có một vài gói trên ví dụ oracle của tôi. Khi tôi tạo lại cơ sở dữ liệu của mình từ đầu, tôi nhận được các đối tượng không hợp lệ và không có cảnh báo từ liquibase.Oracle 10g tuyên bố rằng một gói phần mềm có lỗi khi nó không
Sau đó, khi tôi gọi một phương thức trọn gói, như vậy:
new SimpleJdbcCall(jdbcTemplate).withCatalogName(packageName).withProcedureName(storedProcedureName).execute(parameterMap);
Nó mang lại cho tôi những lỗi sau:
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
Kiểm tra cho các đối tượng không hợp lệ một lần nữa lần lượt lên gì cả. Việc biên dịch CALENDAR_MANAGEMENT một lần nữa hoàn thành bình thường mà không có lỗi.
Tôi đã thử biên dịch lại toàn bộ lược đồ, nhưng điều đó không hoạt động.
Khi tôi gọi nó từ SQLDeveloper, nó hoạt động bình thường.
Bạn có đang chạy nó bằng cùng một tài khoản trong Java và SQLDeveloper không? –
Có. Cả hai tài khoản đều giống nhau. Để đảm bảo rằng không có sự khác biệt, tôi đã đăng nhập dưới dạng hệ thống và chạy 'hiển thị lỗi gói ETPDEV.CALENDAR_MANAGEMENT'. Không có lỗi. –
Bạn nói cả hai tài khoản đều giống nhau nhưng cả hai đều đăng nhập với chính xác cùng một người dùng không? Điều này trông giống như một vấn đề quyền cổ điển. – Ollie