"Класс оборудования" уникален вообще, а не только в рамках выборки, возможность указать процедуру подготовки данных для прогноза в модели
This commit is contained in:
parent
b43445491f
commit
277af55060
@ -156,6 +156,7 @@ create or replace package UDO_PKG_EQUIPDS as
|
||||
NPRN in number, -- Родитель
|
||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||
NDATASET_ID in number, -- Идентификатор выборки
|
||||
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
|
||||
NRN out number -- Регистрационный номер
|
||||
);
|
||||
|
||||
@ -373,7 +374,7 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
else
|
||||
/* Выборка есть - надо проверить в ней наличие класса оборудования */
|
||||
UDO_PKG_EQUIPDS_BASE.CM_FIND_BY_EQOBJKIND(NFLAG_SMART => 1,
|
||||
NPRN => NEQUIPDS,
|
||||
NCOMPANY => NCOMPANY,
|
||||
SEQOBJKIND => SEQOBJKIND,
|
||||
NRN => NEQUIPDSCM);
|
||||
end if;
|
||||
@ -1151,6 +1152,11 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
SNAME => 'SDATASET',
|
||||
SCAPTION => 'Выборка',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'SUSERPROCS_FRCST_DATA',
|
||||
SCAPTION => 'Процедура формирования',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||
SHINT => UDO_PKG_EQUIPDS_BASE.CMML_USERPROCS_FRCST_DATA_HINT());
|
||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'NSTATUS',
|
||||
SCAPTION => 'Состояние',
|
||||
@ -1174,14 +1180,17 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
from UDO_T_EQUIPDSCMFL F
|
||||
where F.DATASET_ID = T.DATASET_ID
|
||||
and ROWNUM <= 1) DDATASET_TS,
|
||||
UP.CODE SUSERPROCS_FRCST_DATA,
|
||||
T.STATUS NSTATUS,
|
||||
T.ERR SERR
|
||||
from UDO_T_EQUIPDSCMML T,
|
||||
UDO_T_EQUIPDSCM CM,
|
||||
DICMUNTS DM
|
||||
DICMUNTS DM,
|
||||
USERPROCS UP
|
||||
where CM.RN = NEQUIPDSCM
|
||||
and T.PRN = CM.RN
|
||||
and CM.DICMUNTS = DM.RN
|
||||
and T.USERPROCS_FRCST_DATA = UP.RN
|
||||
order by T.RN)
|
||||
loop
|
||||
/* Добавляем колонки с данными */
|
||||
@ -1193,6 +1202,9 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
SNAME => 'SDATASET',
|
||||
SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID,
|
||||
DDATASET_TS => C.DDATASET_TS));
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
||||
SNAME => 'SUSERPROCS_FRCST_DATA',
|
||||
SVALUE => C.SUSERPROCS_FRCST_DATA);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');
|
||||
@ -1206,12 +1218,14 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
/* Клиентское добавление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_INS
|
||||
(
|
||||
NPRN in number, -- Родитель
|
||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||
NDATASET_ID in number, -- Идентификатор выборки
|
||||
NRN out number -- Регистрационный номер
|
||||
NPRN in number, -- Родитель
|
||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||
NDATASET_ID in number, -- Идентификатор выборки
|
||||
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
|
||||
NRN out number -- Регистрационный номер
|
||||
)
|
||||
is
|
||||
NUSERPROCS_FRCST_DATA PKG_STD.TREF; -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
begin
|
||||
/* Проверим параметры */
|
||||
if (STASK is null) then
|
||||
@ -1220,13 +1234,21 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
if (NDATASET_ID is null) then
|
||||
P_EXCEPTION(0, 'Не указана выборка.');
|
||||
end if;
|
||||
if (SUSERPROCS_FRCST_DATA is null) then
|
||||
P_EXCEPTION(0,
|
||||
'Не указана процедура формирования данных для прогноза.');
|
||||
end if;
|
||||
/* Проверим права доступа */
|
||||
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCMML', SACTION => 'UDO_EQUIPDSCMML_INSERT');
|
||||
/* Разыменуем ссылки */
|
||||
UDO_PKG_EQUIPDS_BASE.CMML_JOINS(SUSERPROCS_FRCST_DATA => SUSERPROCS_FRCST_DATA,
|
||||
NUSERPROCS_FRCST_DATA => NUSERPROCS_FRCST_DATA);
|
||||
/* Добавляем запись */
|
||||
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN,
|
||||
STASK => STASK,
|
||||
NDATASET_ID => NDATASET_ID,
|
||||
NRN => NRN);
|
||||
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN,
|
||||
STASK => STASK,
|
||||
NDATASET_ID => NDATASET_ID,
|
||||
NUSERPROCS_FRCST_DATA => NUSERPROCS_FRCST_DATA,
|
||||
NRN => NRN);
|
||||
end CMML_INS;
|
||||
|
||||
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
@ -1356,6 +1378,11 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
SCAPTION => 'Единица измерения',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||
BVISIBLE => false);
|
||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'SUSERPROCS_FRCST_DATA',
|
||||
SCAPTION => 'Процедура формирования',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||
SHINT => UDO_PKG_EQUIPDS_BASE.CMML_USERPROCS_FRCST_DATA_HINT());
|
||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'NSTATUS',
|
||||
SCAPTION => 'Состояние',
|
||||
@ -1375,6 +1402,7 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
T.PRN NEQUIPDSCM,
|
||||
DS.NAME SNEQUIPDS,
|
||||
T.TASK STASK,
|
||||
UP.CODE SUSERPROCS_FRCST_DATA,
|
||||
T.PRECISION NPRECISION,
|
||||
DM.MEAS_MNEMO SDICMUNTS,
|
||||
T.STATUS NSTATUS,
|
||||
@ -1382,11 +1410,13 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
from UDO_T_EQUIPDSCMML T,
|
||||
UDO_T_EQUIPDSCM CM,
|
||||
UDO_T_EQUIPDS DS,
|
||||
DICMUNTS DM
|
||||
DICMUNTS DM,
|
||||
USERPROCS UP
|
||||
where T.PRN = CM.RN
|
||||
and CM.PRN = DS.RN
|
||||
and CM.DICMUNTS = DM.RN
|
||||
and CM.EQOBJKIND = (select CF.OBJ_KIND from EQCONFIG CF where CF.RN = NEQCONFIG)
|
||||
and T.USERPROCS_FRCST_DATA = UP.RN
|
||||
order by T.RN)
|
||||
loop
|
||||
/* Добавляем колонки с данными */
|
||||
@ -1397,6 +1427,7 @@ create or replace package body UDO_PKG_EQUIPDS as
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STASK', SVALUE => C.STASK);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPRECISION', NVALUE => C.NPRECISION);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SDICMUNTS', SVALUE => C.SDICMUNTS);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SUSERPROCS_FRCST_DATA', SVALUE => C.SUSERPROCS_FRCST_DATA);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR);
|
||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');
|
||||
|
@ -96,8 +96,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
||||
procedure CM_FIND_BY_EQOBJKIND
|
||||
(
|
||||
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
||||
NPRN in number, -- Родитель
|
||||
SEQOBJKIND in varchar2, -- Класс оборудования
|
||||
NCOMPANY in number, -- Организация
|
||||
SEQOBJKIND in varchar2, -- Класс оборудования (полный иерархический код)
|
||||
NRN out number -- Регистрационный номер
|
||||
);
|
||||
|
||||
@ -227,20 +227,29 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
||||
NRN out number -- Регистрационный номер
|
||||
);
|
||||
|
||||
/* Разыменование словарей "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_JOINS
|
||||
(
|
||||
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
|
||||
NUSERPROCS_FRCST_DATA out number -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
);
|
||||
|
||||
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_INS
|
||||
(
|
||||
NPRN in number, -- Родитель
|
||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||
NDATASET_ID in number, -- Идентификатор выборки
|
||||
NUSERPROCS_FRCST_DATA in number, -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
NRN out number -- Регистрационный номер
|
||||
);
|
||||
|
||||
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_UPD
|
||||
(
|
||||
NRN in number, -- Регистрационный номер
|
||||
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
|
||||
NRN in number, -- Регистрационный номер
|
||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||
NUSERPROCS_FRCST_DATA in number -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
);
|
||||
|
||||
/* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
@ -275,6 +284,10 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
||||
function CMML_TASK_HINT
|
||||
return varchar2; -- Подсказка для задачи
|
||||
|
||||
/* Формирование подсказки для процедуры формирования данных для прогноза "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
function CMML_USERPROCS_FRCST_DATA_HINT
|
||||
return varchar2; -- Подсказка для процедуры формирования данных для прогноза
|
||||
|
||||
/* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */
|
||||
function CMML_RUL_BREAKDOWN_PROB
|
||||
(
|
||||
@ -495,28 +508,28 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
/* Поиск "Выборки данных оборудования (классы оборудования)" по классу оборудования */
|
||||
procedure CM_FIND_BY_EQOBJKIND
|
||||
(
|
||||
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
||||
NPRN in number, -- Родитель
|
||||
SEQOBJKIND in varchar2, -- Класс оборудования
|
||||
NRN out number -- Регистрационный номер
|
||||
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
||||
NCOMPANY in number, -- Организация
|
||||
SEQOBJKIND in varchar2, -- Класс оборудования (полный иерархический код)
|
||||
NRN out number -- Регистрационный номер
|
||||
)
|
||||
is
|
||||
NEQOBJKIND PKG_STD.TREF; -- Рег. номер класса оборудования
|
||||
begin
|
||||
/* Класс оборудования */
|
||||
FIND_EQOBJKIND_FULLCODE(NFLAG_SMART => NFLAG_SMART,
|
||||
NFLAG_OPTION => 0,
|
||||
NCOMPANY => NCOMPANY,
|
||||
SCODE => SEQOBJKIND,
|
||||
NRN => NEQOBJKIND);
|
||||
/* Поиск записи */
|
||||
begin
|
||||
select T.RN
|
||||
into NRN
|
||||
from UDO_T_EQUIPDSCM T,
|
||||
EQOBJKIND OK
|
||||
where T.PRN = NPRN
|
||||
and T.EQOBJKIND = OK.RN
|
||||
and OK.CODE = SEQOBJKIND;
|
||||
select T.RN into NRN from UDO_T_EQUIPDSCM T where T.EQOBJKIND = NEQOBJKIND;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
P_EXCEPTION(NFLAG_SMART,
|
||||
'Класс оборудования "%s" в выборке данных "%s" не определён.',
|
||||
SEQOBJKIND,
|
||||
TO_CHAR(NPRN));
|
||||
'Класс оборудования "%s" в выборках данных не определён.',
|
||||
SEQOBJKIND);
|
||||
end;
|
||||
end CM_FIND_BY_EQOBJKIND;
|
||||
|
||||
@ -1012,12 +1025,30 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
end;
|
||||
end CMML_FIND_BY_TASK;
|
||||
|
||||
/* Разыменование словарей "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_JOINS
|
||||
(
|
||||
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
|
||||
NUSERPROCS_FRCST_DATA out number -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Процедура формирования данных для прогноза */
|
||||
if (SUSERPROCS_FRCST_DATA is not null) then
|
||||
FIND_USERPROCS_CODE(NFLAG_SMART => 0, SCODE => SUSERPROCS_FRCST_DATA, NRN => NUSERPROCS_FRCST_DATA);
|
||||
else
|
||||
P_EXCEPTION(0,
|
||||
'Не указана процедура формирования данных для прогноза.');
|
||||
end if;
|
||||
end CMML_JOINS;
|
||||
|
||||
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_INS
|
||||
(
|
||||
NPRN in number, -- Родитель
|
||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||
NDATASET_ID in number, -- Идентификатор выборки
|
||||
NUSERPROCS_FRCST_DATA in number, -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
NRN out number -- Регистрационный номер
|
||||
)
|
||||
is
|
||||
@ -1044,16 +1075,17 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
NRN := GEN_ID();
|
||||
/* Добавляем запись */
|
||||
insert into UDO_T_EQUIPDSCMML
|
||||
(RN, PRN, TASK, PRECISION, QUEUE_ID, STATUS, ERR, DATASET_ID)
|
||||
(RN, PRN, TASK, PRECISION, QUEUE_ID, STATUS, ERR, DATASET_ID, USERPROCS_FRCST_DATA)
|
||||
values
|
||||
(NRN, NPRN, STASK, null, null, NCMML_STATUS_REGISTERED, null, NDATASET_ID);
|
||||
(NRN, NPRN, STASK, null, null, NCMML_STATUS_REGISTERED, null, NDATASET_ID, NUSERPROCS_FRCST_DATA);
|
||||
end CMML_INS;
|
||||
|
||||
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
procedure CMML_UPD
|
||||
(
|
||||
NRN in number, -- Регистрационный номер
|
||||
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
|
||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||
NUSERPROCS_FRCST_DATA in number -- Рег. номер пользовательской процедуры формирования данных для прогноза
|
||||
)
|
||||
is
|
||||
RREC UDO_T_EQUIPDSCMML%rowtype; -- Обрабатываемая запись
|
||||
@ -1066,7 +1098,10 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
'Модель обрабатывается или уже успешно обработана, изменение невозможно.');
|
||||
end if;
|
||||
/* Исправим данные */
|
||||
update UDO_T_EQUIPDSCMML T set T.TASK = STASK where T.RN = NRN;
|
||||
update UDO_T_EQUIPDSCMML T
|
||||
set T.TASK = STASK,
|
||||
T.USERPROCS_FRCST_DATA = NUSERPROCS_FRCST_DATA
|
||||
where T.RN = NRN;
|
||||
end CMML_UPD;
|
||||
|
||||
/* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
@ -1170,6 +1205,16 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
'<b>FP</b> - ' || CMML_TASK_NAME(STASK => SCMML_TASK_FP) || ' (<b>F</b>ailure <b>P</b>redict)';
|
||||
end CMML_TASK_HINT;
|
||||
|
||||
/* Формирование подсказки для процедуры формирования данных для прогноза "Выборки данных оборудования (классы оборудования, модели)" */
|
||||
function CMML_USERPROCS_FRCST_DATA_HINT
|
||||
return varchar2 -- Подсказка для процедуры формирования данных для прогноза
|
||||
is
|
||||
begin
|
||||
return 'Пользовательская процедура формирования данных для прогноза. Будет вызвана при запросе прогоза у модели.<br>' ||
|
||||
'Должна иметь <b>входной параметр "NEQCONFIG"</b> - в него при вызове будет передан рег. номер единицы оборудования.<br>' ||
|
||||
'Должна возвращать <b>выходные параметры "NDATASET_IDENT" и "NDATASET_CONFIG_IDENT"</b> - идентификаторы файлового буфера с подготовленными данными (CSV) и описанием структуры данных, соответственно.';
|
||||
end CMML_USERPROCS_FRCST_DATA_HINT;
|
||||
|
||||
/* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */
|
||||
function CMML_RUL_BREAKDOWN_PROB
|
||||
(
|
||||
|
@ -34,5 +34,5 @@ create table UDO_T_EQUIPDSCM
|
||||
constraint UDO_C_EQUIPDSCM_EXSFNSDMDCB_FK foreign key (EXSSERVICEFN_SEND_MDCB) references EXSSERVICEFN(RN),
|
||||
constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN),
|
||||
constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN),
|
||||
constraint UDO_C_EQUIPDSCM_UN unique (PRN, EQOBJKIND)
|
||||
constraint UDO_C_EQUIPDSCM_UN unique (EQOBJKIND)
|
||||
);
|
||||
|
@ -17,6 +17,8 @@ create table UDO_T_EQUIPDSCMML
|
||||
ERR varchar2(4000) default null,
|
||||
/* Идентификатор данных */
|
||||
DATASET_ID number(17) not null,
|
||||
/* Процедура формирования данных для прогнозирования */
|
||||
USERPROCS_FRCST_DATA number(17) not null,
|
||||
/* Ключи */
|
||||
constraint UDO_C_EQUIPDSCMML_RN_PK primary key (RN),
|
||||
constraint UDO_C_EQUIPDSCMML_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
|
||||
@ -28,6 +30,7 @@ create table UDO_T_EQUIPDSCMML
|
||||
constraint UDO_C_EQUIPDSCMML_STATUS_CH check (STATUS in (0, 1, 2, 3)),
|
||||
constraint UDO_C_EQUIPDSCMML_ERR_NB check ((ERR is null) or (rtrim(ERR) is not null)),
|
||||
constraint UDO_C_EQUIPDSCMML_ERR_CH check (((STATUS in (3)) and (ERR is not null)) or ((STATUS not in (3)) and (ERR is null))),
|
||||
constraint UDO_C_EQUIPDSCMML_USRPFD_FK foreign key (USERPROCS_FRCST_DATA) references USERPROCS(RN),
|
||||
constraint UDO_C_EQUIPDSCMML_UN unique (PRN, TASK),
|
||||
constraint UDO_C_EQUIPDSCMML_QID_UN unique (QUEUE_ID)
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user