forked from CITKParus/P8-Panels
БД: Отвязка от серверных объектов "Сервиса интеграции"
This commit is contained in:
parent
92b22932cc
commit
3625b4a095
@ -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 ||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user