Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-06508:PL/SQL:nie można znaleźć wywoływanej jednostki programu

Podejrzewam, że zgłaszasz tylko ostatni błąd w takim stosie:

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "schema.package" has been invalidated
ORA-04065: not executed, altered or dropped package body "schema.package"
ORA-06508: PL/SQL: could not find program unit being called: "schema.package"

Jeśli tak, to dlatego, że Twój pakiet jest stanowy:

Wartości zmiennych, stałych i kursorów, które pakiet deklaruje (w jego specyfikacji lub treści) składają się na jego stan pakietu . Jeśli pakiet PL/SQL deklaruje co najmniej jedną zmienną, stałą lub kursor, pakiet jest stanowy; w przeciwnym razie jest bezpaństwowy .

Po ponownej kompilacji stan zostanie utracony:

Jeśli treść utworzonego pakietu stanowego zostanie ponownie skompilowana (albo jawnie, za pomocą "Instrukcji ALTER PACKAGE", albo niejawnie), następne wywołanie podprogramu w pakiecie spowoduje, że Oracle Database odrzuci istniejący stan pakietu i zgłosi wyjątekORA-04068.

Po tym, jak PL/SQL zgłosi wyjątek, odwołanie do pakietu powoduje, że Oracle Database ponownie tworzy instancję pakietu, co powoduje jego ponowne zainicjowanie...

Nie możesz tego uniknąć, jeśli twój pakiet ma stan. Myślę, że dość rzadko zdarza się, aby pakiet był stanowy, więc powinieneś ponownie przejrzeć wszystko, co zadeklarowałeś w pakiecie, ale poza funkcją lub procedurą, aby zobaczyć, czy jest to naprawdę potrzebne na tym poziomie. Ponieważ jednak korzystasz z 10g, obejmuje to stałe, a nie tylko zmienne i kursory.

Ale ostatni akapit z cytowanej dokumentacji oznacza, że ​​następnym razem, gdy odniesiesz się do pakietu w tej samej sesji, nie otrzymasz błędu i będzie on działał normalnie (do czasu ponownej kompilacji).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień nazwę tabeli lub widoku Oracle

  2. Oracle:czy kolejność kolumn ma znaczenie w indeksie?

  3. Jak napisać zapytanie, które robi coś podobnego do GROUP_CONCAT MySQL w Oracle?

  4. Enterprise Manager 11g FMW Control w R12.2

  5. Wywołaj funkcję Oracle z Javy