Обязательно ли перекомпилировать тело, если вы перекомпилируете спецификацию

У меня есть одна переменная в спецификации пакета. Я изменяю эту переменную только каждый раз.

Нужно ли мне перекомпилировать body каждый раз, когда я делаю эти изменения?

На самом деле я смущен, когда нужно перекомпилировать package body, потому что я не компилирую его в каждом случае.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
0
390
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пакеты в оракуле сохраняют состояние в сеансе, поэтому вы получите сообщение об ошибке состояния пакета было отброшено, если вы измените спецификацию пакета или тело из БД, и этот пакет используется в каком-то сеансе в вашем приложении. но это не проблема, если доступ к пакету в настоящее время не осуществляется через какой-либо из сеансов.

Но, если вы говорите об изменении пакета и тела пакета, необходимо перекомпилировать? --> Тогда ответ - нет.

См. небольшую демонстрацию здесь:

Создание спецификации или тела пакета:

SQL> create or replace package p
  2  as
  3  num number := 123;
  4  function f(p_in number) return number;
  5  end p;
  6  /

Package created.

SQL>
SQL> create or replace package body p
  2  as
  3  function f(p_in number) return number is
  4  begin
  5  return num;
  6  end f;
  7  end p;
  8  /

Package body created.

SQL>

Вызов функции пакета:

SQL> select p.f(2) from dual;

    P.F(2)
----------
       123

SQL>

Изменение спецификации пакета:

SQL> create or replace package p
  2  as
  3  num number := 456;
  4  function f(p_in number) return number;
  5  end p;
  6  /

Package created.

SQL>

Вызов функции пакета без изменения тела:

SQL> select p.f(2) from dual;

    P.F(2)
----------
       456

SQL>

Ой!!! Оно работает.

Другие вопросы по теме