Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-06508:PL/SQL:не можа да намери извикан програмен модул

Предполагам, че докладвате само последната грешка в стека като този:

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"

Ако е така, това е защото вашият пакет е с състояние:

Стойностите на променливите, константите и курсорите, които пакетът декларира (в неговата спецификация или в тялото си), съдържат неговото състояние на пакета . Ако PL/SQL пакет декларира поне една променлива, константа или курсор, тогава пакетът е състояние; в противен случай ебез гражданство .

Когато прекомпилирате, състоянието се губи:

Ако тялото на инстанциран пакет с поддържане на състоянието се прекомпилира (или изрично, с „Изявление на ALTER PACKAGE“, или имплицитно), следващото извикване на подпрограма в пакета кара Oracle Database да отхвърли съществуващото състояние на пакета и да повдигне изключениетоORA-04068.

След като PL/SQL повдигне изключението, препратка към пакета кара Oracle Database да инстанцира отново пакета, което повторно инициализира...

Не можете да избегнете това, ако вашият пакет има състояние. Мисля, че е доста рядко наистина да се нуждаете от пакет, който да е с състояние, така че трябва да прегледате отново всичко, което сте декларирали в пакета, но извън функция или процедура, за да видите дали наистина е необходимо на това ниво. Тъй като сте на 10g обаче, това включва константи, а не само променливи и курсори.

Но последният параграф от цитираната документация означава, че следващия път, когато препратите пакета в същата сесия, няма да получите грешката и тя ще работи нормално (докато не компилирате отново).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете дефинирана от потребителя променлива за тип данни в Oracle Database

  2. Как да сортирате първо по числа с Oracle SQL заявка?

  3. Грешка в изхода на SQL Fiddle

  4. Oracle PL/SQL групово събиране с пример за изключения за запазване

  5. Как да планирате работа в Oracle SQL Developer?