CftClub.ru
Клуб специалистов ЦФТ-Банк

Использование varray

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
jamil
Участник со стажем
Неподтвержденный


Вступление в Клуб: 11.08.2014
СообщениеСр Dec 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
СообщениеЧт Dec 29, 2016 02:49    Ответить с цитатой
Полезность: Нет оценки
Ну в массив имеет смысл загонять , если ты будешь несколько раз использовать обращения к этому массиву ...

А что хотел получить-то - количество клиентов имеющих и кредиты и депозиты ?
jamil
Участник со стажем
Неподтвержденный


Вступление в Клуб: 11.08.2014
СообщениеЧт Dec 29, 2016 05:54    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Ну в массив имеет смысл загонять , если ты будешь несколько раз использовать обращения к этому массиву ...

А что хотел получить-то - количество клиентов имеющих и кредиты и депозиты ?

Да и не только. Нужно еще получить количество клиентов кредит+депозит+карта, кредит+депозит+интнрнет банкинг+карта …
Эмиралька
Профи
Неподтвержденный


Вступление в Клуб: 09.11.2015
СообщениеЧт Dec 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
СообщениеЧт Dec 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
СообщениеЧт Dec 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...


"Так короче и понятнее." - самое главное - гораздо быстрее!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru