Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Ср Дек 28, 2016 13:10  Использование varray |
|
Полезность: Нет оценки
|
Есть код такового вида:
Код: |
type T_data is varray(0) of number;
kredits T_data;
overdrafts T_data;
deposits T_data;
begin
kredits.init;
overdrafts.init;
deposits.init;
-- заполняем массив кредитов
for ( select distinct cr(cr.[CLIENT]%id C_CL)
in ::[PR_CRED] all
where cr%class<>'OVERDRAFTS'
and nvl(cr.[DATE_CLOSE],p#date)>=p#date
and (p#dep is null or cr.[DEPART].[ESH_DEPART_REF] = p#dep)
and cr.[DATE_GIVE]<=p#date
) loop
kredits.extend;
idx:=kredits.count;
kredits(idx):=cr.C_CL;
end loop;
-- заполняем массив депозитов
for ( select distinct dep(dep.[CLIENT]%id C_CL)
in ::[DEPN] all
where nvl(dep.[DATE_CLOSE],p#date)>=p#date
and dep.[DATE_BEGIN]<=p#date
and (p#dep is null or dep.[DEPART].[ESH_DEPART_REF] = p#dep)
and fd.Patt2Where('20220, 20222, 20230, 20232', '~' || dep.[ACCOUNT].[MAIN_V_ID]) = 1
) loop
deposits.extend;
idx:=deposits.count;
deposits(idx):=dep.C_CL;
end loop;
begin
select kred(count(kred.COLUMN_VALUE))
in kredits,(deposits all :dep) all
where kred.COLUMN_VALUE=dep.COLUMN_VALUE
into kreddep;
end;
|
правильно ли я поступаю используя varray таким образом? |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Дек 29, 2016 02:49   |
|
Полезность: Нет оценки
|
Ну в массив имеет смысл загонять , если ты будешь несколько раз использовать обращения к этому массиву ...
А что хотел получить-то - количество клиентов имеющих и кредиты и депозиты ? |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Дек 29, 2016 05:54   |
|
Полезность: Нет оценки
|
Alkov пишет: | Ну в массив имеет смысл загонять , если ты будешь несколько раз использовать обращения к этому массиву ...
А что хотел получить-то - количество клиентов имеющих и кредиты и депозиты ? |
Да и не только. Нужно еще получить количество клиентов кредит+депозит+карта, кредит+депозит+интнрнет банкинг+карта … |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Чт Дек 29, 2016 06:38  Re: Использование varray |
|
Полезность: 1
|
Всё замечательно.
Можно поприцепляться к мелочам? Профессия обязывает...
Код: | ...
select distinct cr(cr.[CLIENT]%id C_CL)
in ::[PR_CRED] all
where cr%class<>'OVERDRAFTS'
and nvl(cr.[DATE_CLOSE],p#date)>=p#date
and (p#dep is null or cr.[DEPART].[ESH_DEPART_REF] = p#dep)
and cr.[DATE_GIVE]<=p#date
into kredits;
| Так короче и понятнее.
Переменные я бы не стала называть без префиксов. Легко кто-нить заведёт новый ТБП kredits... |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Дек 29, 2016 06:53  Re: Использование varray |
|
Полезность: Нет оценки
|
Эмиралька пишет: | Всё замечательно.
Можно поприцепляться к мелочам? Профессия обязывает...
Код: | ...
select distinct cr(cr.[CLIENT]%id C_CL)
in ::[PR_CRED] all
where cr%class<>'OVERDRAFTS'
and nvl(cr.[DATE_CLOSE],p#date)>=p#date
and (p#dep is null or cr.[DEPART].[ESH_DEPART_REF] = p#dep)
and cr.[DATE_GIVE]<=p#date
into kredits;
| Так короче и понятнее.
Переменные я бы не стала называть без префиксов. Легко кто-нить заведёт новый ТБП kredits... |
Спасибо за подсказку. Я не знал про такой подход. Впредь буду использовать именно такой подход. |
|
 |
OlegFB Участник - экстремал
Вступление в Клуб: 11.07.2007
|
Чт Дек 29, 2016 09:34  Re: Использование varray |
|
Полезность: Нет оценки
|
Эмиралька пишет: | Всё замечательно.
Можно поприцепляться к мелочам? Профессия обязывает...
Код: | ...
select distinct cr(cr.[CLIENT]%id C_CL)
in ::[PR_CRED] all
where cr%class<>'OVERDRAFTS'
and nvl(cr.[DATE_CLOSE],p#date)>=p#date
and (p#dep is null or cr.[DEPART].[ESH_DEPART_REF] = p#dep)
and cr.[DATE_GIVE]<=p#date
into kredits;
| Так короче и понятнее.
Переменные я бы не стала называть без префиксов. Легко кто-нить заведёт новый ТБП kredits... |
"Так короче и понятнее." - самое главное - гораздо быстрее! |
|
 |
|