Список параметров в процедуре - PullRequest
0 голосов
/ 03 мая 2018

Существует процедура A с 2 параметрами, и эта процедура вызывается в 10 хранимых процедурах. (B, c, d ....) Теперь proc A обновляется с 3 параметрами, есть ли способ обновить список параметров proc A при вызове 10 процедур за один раз.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Если есть только несколько процедур, которые обновят 3-й оператор, вы использовали бы значение по умолчанию для вашего параметра. Таким образом, вам не нужно обновлять все 10 процедур.

Например,

CREATE OR REPLACE PROCEDURE PRC_UPD_MYPROCEDURE
( 
   p_ParameterOne IN NUMBER, 
   p_ParameterTwo IN VARCHAR2, 
   p_ParameterThree IN NUMBER DEFAULT NULL,
)

поэтому, когда вы вызываете вашу процедуру как (без третьего параметра),

PRC_UPD_MYPROCEDURE(1234,'EXAMPLE');

действителен.

0 голосов
/ 03 мая 2018

Как правило, когда вы публикуете свой API (например, спецификацию пакета с несколькими процедурами и функциями) и он вводится в действие, вы подписываете своего рода договор с другими разработчиками.

Вы не должны изменять подпись этих подпрограмм (изменять условия контракта), если это не является абсолютно необходимым.

Альтернативы включают в себя:

  • При добавлении нового параметра IN всегда помещайте его в конец существующего списка параметров и предоставьте значение по умолчанию, которое отражает текущее поведение (до изменения). Все существующие вызовы подпрограммы остаются действительными.
  • Если вы добавляете параметры OUT или IN OUT, рассмотрите возможность оставить текущую подпрограмму как есть и вместо этого добавить перегрузку - то же имя, но с новым расширенным списком параметров.

Таким образом, существующий код не становится недействительным. Затем вы можете уведомить разработчиков о новых подпрограммах (изменить контракт), и они могут выбрать, использовать их или нет.

Кстати, вы можете использовать PL / Scope, чтобы найти все варианты использования определенной подпрограммы. LiveSQL.oracle.com предлагает несколько сценариев PL / Scope. Просто найдите «область». Кроме того, Филипп Салвисберг предлагает отличную утилиту PL / Scope на Github: https://www.salvis.com/blog/2017/03/17/plscope-utils-utilities-for-plscope-in-oracle-database-12-2/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...