| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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... | 	  
 
 
"Так короче и понятнее." - самое главное - гораздо быстрее! | 
			 
		  | 
	
	
		  | 
	
	
		 |