DECLARE
c integer := 0;
find_s varchar(15) := 'ORGACC_IDS="';
accstr varchar(32767);
ac_id integer;
acc_num varchar2(35);
tmp1_acc_cnt integer := 0;
o_inn varchar2(20);
o_name varchar2(255);
CURSOR crsr is
select
r.id,
r.DOC_NUMBER,
t.CAPTION,
INSTR(r.PARAMS,find_s)+12 as START_TAG,
INSTR(r.PARAMS,'"',INSTR(r.PARAMS,find_s)+12+1) as END_TAG,
((INSTR(r.PARAMS,'"',INSTR(r.PARAMS,find_s)+12+1))-(INSTR(r.PARAMS,find_s)+12)) as TAG_LEN,
SUBSTR(r.PARAMS,INSTR(r.PARAMS,find_s)+12,((INSTR(r.PARAMS,'"',INSTR(r.PARAMS,find_s)+12+1))-(INSTR(r.PARAMS,find_s)+12))) as ACC_STR,
regexp_count(SUBSTR(r.PARAMS,INSTR(r.PARAMS,find_s)+12,((INSTR(r.PARAMS,'"',INSTR(r.PARAMS,find_s)+12+1))-(INSTR(r.PARAMS,find_s)+12))),',')+1 as ACC_CNT
from PBSREPTEMPLATE r join PBSREPTYPE t on t.id=r.PBSREPTYPE_ID
/* where r.BUDGET_ID in () */ /* where r.id in (800000001851) - для проверки на одном шаблоне */;
BEGIN
dbms_output.put_line('ID'||chr(09)||'Номер'||chr(09)||'Тип'||chr(09)||'Счет'||chr(09)||'ИНН'||chr(09)||'Организация');
FOR s in crsr LOOP
accstr := s.ACC_STR;
FOR i in 1..s.ACC_CNT LOOP /* Разбираем строку с перечислением ID счетов на отдельные части */
c := INSTR(accstr,',');
ac_id := SUBSTR(accstr,1,c-1);
accstr := SUBSTR(accstr,c+1,s.TAG_LEN);
if i = s.ACC_CNT then ac_id := accstr; end if; /* Если итерация крайняя, то выводим остаток строки с перечислением ID счетов, там как раз остается крайний счет */
select count(*) into tmp1_acc_cnt from orgaccount where close_date is null and id = ac_id;
if tmp1_acc_cnt = 0 then continue; end if; /* Если счет закрыт, то вывод инфы пропускаем */
select ACCOUNT_NUMBER into acc_num from orgaccount where close_date is null and id = ac_id;
select o.taxcode, o.caption into o_inn, o_name from org o where exists (select null from orgaccount oa where oa.ORG_ID=o.id and oa.id = ac_id);
dbms_output.put_line(s.id||chr(09)||trim(s.DOC_NUMBER)||chr(09)||s.CAPTION||chr(09)||acc_num||chr(09)||o_inn||chr(09)||o_name);
END LOOP;
END LOOP;
END;
суббота, 15 февраля 2020 г.
Исполняемый блок SQL с итерациями по ID
Подписаться на:
Комментарии к сообщению (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
►
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)
Комментариев нет:
Отправить комментарий