P8PanelsCEMROS/db/UDO_PKG_P8PANELS_USETTINGS.pck

234 lines
8.8 KiB
Plaintext
Raw Blame History

create or replace package UDO_PKG_P8PANELS_USETTINGS as
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
procedure SETTINGS_SET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
);
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
COUT out clob -- <20>àñòðîéêè ïàíåëè
);
end UDO_PKG_P8PANELS_USETTINGS;
/
create or replace package body UDO_PKG_P8PANELS_USETTINGS as
/* Šîíñòàíòû - îáùèå */
XRQ_SETTINGS constant PKG_STD.TSTRING := 'XSETTINGS'; -- ˆìß óçëà íàñòðîåê ïàíåëè
/* „îáàâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_INSERT
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CPANEL_SETTINGS in clob, -- <20>àñòðîéêè ïàíåëè
NRN out number -- <20>åã. íîìåð çàïèñè
)
is
begin
/* ƒåíåðàöèß ðåãèñòðàöèîííîãî íîìåðà çàïèñè */
NRN := GEN_IDENT();
/* „îáàâëßåì çàïèñü â òàáëèöó */
insert into UDO_P8PANELS_USETTING
(RN, COMPANY, authid, PANEL, PANEL_SETTINGS)
values
(NRN, NCOMPANY, SAUTHID, SPANEL, CPANEL_SETTINGS);
end P8PANELS_USETTING_INSERT;
/* Žáíîâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_UPDATE
(
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CPANEL_SETTINGS in clob -- <20>àñòðîéêè ïàíåëè
)
is
begin
/* ˆñïðàâëåíèå çàïèñè â òàáëèöå */
update UDO_P8PANELS_USETTING T
set T.AUTHID = SAUTHID,
T.PANEL = SPANEL,
T.PANEL_SETTINGS = CPANEL_SETTINGS
where T.RN = NRN
and T.COMPANY = NCOMPANY;
if (sql%notfound) then
P_EXCEPTION(0,
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
TO_CHAR(NRN));
end if;
end P8PANELS_USETTING_UPDATE;
/* “äàëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_DELETE
(
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
)
is
begin
/* “äàëåíèå çàïèñè èç òàáëèöû */
delete from UDO_P8PANELS_USETTING
where RN = NRN
and COMPANY = NCOMPANY;
if (sql%notfound) then
P_EXCEPTION(0,
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
TO_CHAR(NRN));
end if;
end P8PANELS_USETTING_DELETE;
/* ‘÷èòûâàíèå çàïèñè íàñòðîéêè ïàíåëè */
function P8PANELS_USETTING_GET
(
NFLAG_SMART in number, -- <20>ðèçíàê âûäà÷è ñîîáùåíèß îá îøèáêå
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
) return UDO_P8PANELS_USETTING%rowtype -- ‡àïèñü íàñòðîéêè ïàíåëè
is
RRESULT UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
begin
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè ïàíåëè */
begin
select T.*
into RRESULT
from UDO_P8PANELS_USETTING T
where T.RN = NRN
and T.COMPANY = NCOMPANY;
exception
when NO_DATA_FOUND then
P_EXCEPTION(NFLAG_SMART, 'Žøèáêà ñ÷èòûâàíèß çàïèñè íàñòðîéêè ïàíåëè ñ ðåã. íîìåðîì "%s".');
end;
/* ‚îçâðàùàåì ðåçóëüòàò */
return RRESULT;
end P8PANELS_USETTING_GET;
/* ‘÷èòûâàíèå ðåã. íîìåðà çàïèñè íàñòðîéêè ïàíåëè òåêóùåãî ïîëüçîâàòåëß ïî íàèìåíîâàíèþ ïàíåëè */
procedure P8PANELS_USETTING_FIND
(
NFLAG_SMART in number, -- <20>ðèçíàê ãåíåðàöèè èñêëþ÷åíèß (0 - äà, 1 - íåò)
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
NRN out number -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
)
is
begin
/* …ñëè íàèìåíîâàíèå ïàíåëè íå çàäàíî */
if (RTRIM(SPANEL) is null) then
/* ƒåíåðàöèß èñêëþ÷åíèß */
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàíî íàèìåíîâàíèå íàñòðîéêè íàñòðîéêè.');
/* ‚ûõîäèì */
return;
end if;
/* …ñëè ïîëüçîâàòåëü íå çàäàí */
if (RTRIM(SAUTHID) is null) then
/* ƒåíåðàöèß èñêëþ÷åíèß */
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàí ïîëüçîâàòåëü íàñòðîéêè ïàíåëè.');
/* ‚ûõîäèì */
return;
end if;
/* <20>îèñê çàïèñè */
begin
select T.RN
into NRN
from UDO_P8PANELS_USETTING T
where T.PANEL = SPANEL
and T.AUTHID = SAUTHID
and T.COMPANY = NCOMPANY;
exception
when NO_DATA_FOUND then
P_EXCEPTION(NFLAG_SMART,
'<27>àñòðîéêà ïàíåëè ñ íàèìåíîâàíèåì "%s" íå îïðåäåëÞíà.',
SPANEL);
end;
end P8PANELS_USETTING_FIND;
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
procedure SETTINGS_SET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
)
is
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
CDATA clob; -- „àííûå íàñòðîéêè ïàíåëè
begin
/* …ñëè íå çàäàíî íàèìåíîâàíèå ïàíåëè */
if (RTRIM(SPANEL) is null) then
P_EXCEPTION(0,
'<27>àèìåíîâàíèå ïàíåëè ïðè ñîõðàíåíèè íàñòðîåê ïàíåëè íå îïðåäåëåíî.');
end if;
/* ”îðìàòèðóåì äàííûå íàñòðîéêè ïàíåëè */
CDATA := '<' || XRQ_SETTINGS || '>' ||
BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CSETTINGS), SCHARSET => PKG_CHARSET.CHARSET_UTF_()) || '</' ||
XRQ_SETTINGS || '>';
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
NRN => NUDO_P8PANELS_USETTING);
/* …ñëè ó ïîëüçîâàòåëß óæå åñòü íàñòðîéêà */
if (NUDO_P8PANELS_USETTING is not null) then
/* Žáíîâëßåì íàñòðîéêè ïàíåëè */
P8PANELS_USETTING_UPDATE(NRN => NUDO_P8PANELS_USETTING,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
CPANEL_SETTINGS => CDATA);
else
/* ‘îçäàåì çàïèñü íàñòðîéêè ïàíåëè */
P8PANELS_USETTING_INSERT(NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
CPANEL_SETTINGS => CDATA,
NRN => NUDO_P8PANELS_USETTING);
end if;
end SETTINGS_SET;
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
COUT out clob -- <20>àñòðîéêè ïàíåëè
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
RUDO_P8PANELS_USETTING UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
begin
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
NRN => NUDO_P8PANELS_USETTING);
/* …ñëè íàñòðîéêà ñ÷èòàíà */
if (NUDO_P8PANELS_USETTING is not null) then
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè */
RUDO_P8PANELS_USETTING := P8PANELS_USETTING_GET(NFLAG_SMART => 1,
NRN => NUDO_P8PANELS_USETTING,
NCOMPANY => NCOMPANY);
/* “ñòàíàâëèâàåì íàñòðîéêè ïàíåëè */
COUT := RUDO_P8PANELS_USETTING.PANEL_SETTINGS;
else
/* <20>óñòîå çíà÷åíèå */
COUT := '<XSETTINGS></XSETTINGS>';
end if;
end SETTINGS_GET;
end UDO_PKG_P8PANELS_USETTINGS;
/