144 lines
8.7 KiB
SQL
144 lines
8.7 KiB
SQL
create or replace procedure UDO_P_P8PANELS_AGNLIST
|
|
(
|
|
NPAGE_NUMBER in number, -- Íîìåð ñòðàíèöû (èãíîðèðóåòñÿ ïðè NPAGE_SIZE=0)
|
|
NPAGE_SIZE in number, -- Êîëè÷åñòâî çàïèñåé íà ñòðàíèöå (0 - âñå)
|
|
CFILTERS in clob, -- Ôèëüòðû
|
|
CORDERS in clob, -- Ñîðòèðîâêè
|
|
NINCLUDE_DEF in number, -- Ïðèçíàê âêëþ÷åíèÿ îïèñàíèÿ êîëîíîê òàáëèöû â îòâåò
|
|
COUT out clob -- Ñåðèàëèçîâàííàÿ òàáëèöà äàííûõ
|
|
)
|
|
is
|
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Îðãàíèçàöèÿ ñåàíñà
|
|
NIDENT PKG_STD.TREF := GEN_IDENT(); -- Èäåíòèôèêàòîð îòáîðà
|
|
RF PKG_P8PANELS_VISUAL.TFILTERS; -- Ôèëüòðû
|
|
RO PKG_P8PANELS_VISUAL.TORDERS; -- Ñîðòèðîâêè
|
|
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Îïèñàíèå òàáëèöû
|
|
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Ñòðîêà òàáëèöû
|
|
RCOL_VALS PKG_P8PANELS_VISUAL.TCOL_VALS; -- Ïðåäîïðåäåë¸ííûå çíà÷åíèÿ ñòîëáöîâ
|
|
NROW_FROM PKG_STD.TREF; -- Íîìåð ñòðîêè ñ
|
|
NROW_TO PKG_STD.TREF; -- Íîìåð ñòðîêè ïî
|
|
CSQL clob; -- Áóôåð äëÿ çàïðîñà
|
|
ICURSOR integer; -- Êóðñîð äëÿ èñïîëíåíèÿ çàïðîñà
|
|
RAGENT AGNLIST%rowtype; -- Áóôåð äëÿ çàïèñè êóðñîðà
|
|
begin
|
|
/* ×èòàåì ôèëüòðû */
|
|
RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS);
|
|
/* ×èòåì ñîðòèðîâêè */
|
|
RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS);
|
|
/* Ïðåîáðàçóåì íîìåð è ðàçìåð ñòðàíèöû â íîìåð ñòðîê ñ è ïî */
|
|
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
|
|
NPAGE_SIZE => NPAGE_SIZE,
|
|
NROW_FROM => NROW_FROM,
|
|
NROW_TO => NROW_TO);
|
|
/* Èíèöèàëèçèðóåì òàáëèöó äàííûõ */
|
|
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
|
|
/* Äîáàâëÿåì â òàáëèöó îïèñàíèå êîëîíîê */
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
SNAME => 'RN',
|
|
SCAPTION => 'Ðåã. íîìåð',
|
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
|
BVISIBLE => false);
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
SNAME => 'AGNABBR',
|
|
SCAPTION => 'Ìíåìîêîä',
|
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
|
SCOND_FROM => 'AgentAbbr',
|
|
BORDER => true,
|
|
BFILTER => true);
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
SNAME => 'AGNNAME',
|
|
SCAPTION => 'Íàèìåíîâàíèå',
|
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
|
SCOND_FROM => 'AgentName',
|
|
BORDER => true,
|
|
BFILTER => true);
|
|
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true);
|
|
PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1);
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
SNAME => 'AGNTYPE',
|
|
SCAPTION => 'Òèï',
|
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
|
SCOND_FROM => 'AgentType',
|
|
BORDER => true,
|
|
BFILTER => true,
|
|
RCOL_VALS => RCOL_VALS);
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
SNAME => 'AGNBURN',
|
|
SCAPTION => 'Äàòà ðîæäåíèÿ',
|
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
|
SCOND_FROM => 'AgentBornFrom',
|
|
SCOND_TO => 'AgentBornTo',
|
|
BORDER => true,
|
|
BFILTER => true);
|
|
/* Îáõîäèì äàííûå */
|
|
begin
|
|
/* Ñîáèðàåì çàïðîñ */
|
|
CSQL := 'select *
|
|
from (select D.*,
|
|
ROWNUM NROW
|
|
from (select AG.RN,
|
|
AG.AGNABBR,
|
|
AG.AGNNAME,
|
|
AG.AGNTYPE,
|
|
AG.AGNBURN
|
|
from AGNLIST AG
|
|
where AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F
|
|
where F.NROW between :NROW_FROM and :NROW_TO';
|
|
/* Ó÷ò¸ì ñîðòèðîâêè */
|
|
PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
|
|
/* Ó÷ò¸ì ôèëüòðû */
|
|
PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT,
|
|
NCOMPANY => NCOMPANY,
|
|
SUNIT => 'AGNLIST',
|
|
SPROCEDURE => 'P_AGNLIST_BASE_COND',
|
|
RDATA_GRID => RDG,
|
|
RFILTERS => RF);
|
|
/* Ðàçáèðàåì åãî */
|
|
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
|
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
|
/* Äåëàåì ïîäñòàíîâêó ïàðàìåòðîâ */
|
|
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NIDENT', NVALUE => NIDENT);
|
|
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_FROM', NVALUE => NROW_FROM);
|
|
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_TO', NVALUE => NROW_TO);
|
|
/* Îïèñûâàåì ñòðóêòóðó çàïèñè êóðñîðà */
|
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 1);
|
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 3);
|
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 4);
|
|
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 5);
|
|
/* Äåëàåì âûáîðêó */
|
|
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
|
null;
|
|
end if;
|
|
/* Îáõîäèì âûáðàííûå çàïèñè */
|
|
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
|
|
loop
|
|
/* Èçâëåêàåì î÷åðåäíóþ çàïèñü */
|
|
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => RAGENT.RN);
|
|
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 2, SVALUE => RAGENT.AGNABBR);
|
|
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 3, SVALUE => RAGENT.AGNNAME);
|
|
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 4, NVALUE => RAGENT.AGNTYPE);
|
|
PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => 5, DVALUE => RAGENT.AGNBURN);
|
|
/* Èíèöèàëèçèðóåì ñòðîêó òàáëèöû äàííûõ */
|
|
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE();
|
|
/* Äîáàâëÿåì êîëîíêè ñ äàííûìè */
|
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'RN', NVALUE => RAGENT.RN);
|
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNABBR', SVALUE => RAGENT.AGNABBR);
|
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNNAME', SVALUE => RAGENT.AGNNAME);
|
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNTYPE', NVALUE => RAGENT.AGNTYPE);
|
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNBURN', DVALUE => RAGENT.AGNBURN);
|
|
/* Äîáàâëÿåì ñòðîêó â òàáëèöó */
|
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
|
end loop;
|
|
/* Îñâîáîæäàåì êóðñîð */
|
|
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
|
exception
|
|
when others then
|
|
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
|
raise;
|
|
end;
|
|
/* Ñåðèàëèçóåì îïèñàíèå */
|
|
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
|
end;
|
|
/
|