БД: Отвязка от серверных объектов "Сервиса интеграции"

This commit is contained in:
Mikhail Chechnev 2025-12-23 16:20:02 +03:00
parent 92b22932cc
commit 3625b4a095

View File

@ -228,6 +228,35 @@ create or replace package body PKG_P8PANELS_BASE as
end if;
end UTL_SEARCH_PREPARE;
/* Разбор ссылки на вызываемый хранимый объект */
procedure UTL_STORED_PARSE_LINK
(
SSTORED in varchar2, -- Ссылка на вызываемый хранимый объект
SPROCEDURE out varchar2, -- Имя процедуры
SPACKAGE out varchar2 -- Имя пакета
)
is
NDELIMITER PKG_STD.TNUMBER; -- Позиция разделителя имени пакета в наименовании хранимого объекта
begin
/* Если есть что разбирать */
if (SSTORED is not null) then
/* Проверим наличие разделителя */
NDELIMITER := INSTR(SSTORED, '.');
/* Если разделитель есть */
if (NDELIMITER <> 0) then
/* Всё что справа от него - это имя процедуры */
SPROCEDURE := UPPER(SUBSTR(SSTORED, NDELIMITER + 1));
/* Всё что слева от него - это имя пакета */
SPACKAGE := UPPER(SUBSTR(SSTORED, 1, NDELIMITER - 1));
else
/* Разделителя нет - это просто имя хранимой процедуры */
SPROCEDURE := UPPER(SSTORED);
/* Без указания пакета */
SPACKAGE := null;
end if;
end if;
end UTL_STORED_PARSE_LINK;
/* Формирование сообщения об отсутствии значения */
function MSG_NO_DATA_MAKE
(
@ -621,12 +650,12 @@ create or replace package body PKG_P8PANELS_BASE as
'Хранимая процедура/функция "' || SSTORED_ || '" не определена.');
else
/* Проверим, что в имени нет ссылки на пакет */
PKG_EXS.UTL_STORED_PARSE_LINK(SSTORED => SSTORED_, SPROCEDURE => SPROCEDURE, SPACKAGE => SPACKAGE);
UTL_STORED_PARSE_LINK(SSTORED => SSTORED_, SPROCEDURE => SPROCEDURE, SPACKAGE => SPACKAGE);
/* Если в имени есть ссылка на пакет - сначала проверим его состояние */
if (SPACKAGE is not null) then
RPACKAGE := PKG_OBJECT_DESC.DESC_PACKAGE(SPACKAGE_NAME => SPACKAGE, BRAISE_ERROR => false);
end if;
/* Если есть ссылка на пакет, или он не валиден - это ошибка */
/* Если есть ссылка на пакет, и он невалиден - это ошибка */
if ((SPACKAGE is not null) and (RPACKAGE.STATUS <> SDB_OBJECT_STATE_VALID)) then
P_EXCEPTION(0,
'Пакет "' || SPACKAGE ||