| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		freshcoder Участник
 
  Вступление в Клуб: 08.06.2015
  | 
		
			
				 Ср Июл 29, 2015 06:45   Списочная операция | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| Всем привет. Может кто подсказать, кто как использует списочные операции, и если можно пару простых примеров. Спасибо. | 
			 
		  | 
	 
	
		  | 
	 
	
		Volod Эксперт
 
  Вступление в Клуб: 19.09.2007
  | 
		
			
				 Ср Июл 29, 2015 15:30    | 
				     | 
			 
			
				Полезность: 1 
  | 
			 
			
				Вам не доступен help из Администратора словаря данных?
 
Списочная операция выполняется для каждой помеченной записи представления. | 
			 
		  | 
	 
	
		  | 
	 
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Чт Июл 30, 2015 06:15    | 
				     | 
			 
			
				Полезность: 2 
  | 
			 
			
				 	  | Volod пишет: | 	 		  Вам не доступен help из Администратора словаря данных?
 
Списочная операция выполняется для каждой помеченной записи представления. | 	  
 
 
Нет. То, что Вы говорите - это простая операция с флагом "Допускает групповую обработку".
 
Простая операция выполняется несколько раз - для каждой из помеченных в представлении записей, и каждый раз у неё новый аргумент this.
 
 
Списочная операция выполняется один раз, но аргументом у неё является список объектов - выделенных в представлении перед запуском.
 
 
Ещё раз: в простой операции this - это ссылка,
 
а в списочной this - это массив (pl/sql-ный) ссылок.
 
 
В общем, лучше всего нажать F12 и посмотреть. | 
			 
		  | 
	 
	
		  | 
	 
	
		Матвеев Евгений Профи
 
  Вступление в Клуб: 31.01.2012
  | 
		
			
				 Чт Июл 30, 2015 09:21   Re: Списочная операция | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | freshcoder пишет: | 	 		  | Всем привет. Может кто подсказать, кто как использует списочные операции, и если можно пару простых примеров. Спасибо. | 	  
 
 
Посмотри в документации 
 
Тип операции -- "Списочная". Применяется к набору экземпляров (из АРМа "Навигатор" подается список выделенных объектов). При этом идентификатор THIS означает PL/SQL таблицу ссылок на экземпляры класса, которому принадлежит операция. В таких операциях всегда определен глобальный тип THIS_TABLE:
 
type THIS_TABLE is table of ref [CLASS];
 
Вызов операции осуществляется путем разыменования переменной типа [CLASS]::[LIST_OPERATION].THIS_TABLE%type через точечную нотацию.
 
 
 
Несколько простых примеров:
 
 
-- Удаление по списку (тело)
 
begin
 
	for i in 1..this.count loop
 
		this(i).[DELETE_AUTO];
 
	end loop;
 
end;
 
 
-- Экспорт по списку
 
begin
 
	for i in 1..this.count loop
 
		this(i).[EXPORT];
 
	end loop;
 
end;
 
 
-- Можно без count
 
rec	ref [RES_PORT];
 
temp varchar2;
 
begin
 
	for i in this.first .. this.last loop
 
		rec := this(i);
 
		temp := rec.PORT_NAME;
 
		&msg(temp);
 
		rec.CREATE_RES(P_DATE);
 
	end loop;	
 
end;
 
 
-- Еще
 
if nvl(P_CHECKED, false) then
 
	for x in this.first..this.last loop
 
		lll(this(x)%id) := this(x)%id;
 
	end loop;
 
end if;
 
 
 
--Пример перевызова простой операции из списочной
 
	rTemplate	ref	[SHABLON_DOC];
 
	vCode			varchar2;
 
Begin
 
	vCode		:= 'ABC_HAPPY';
 
	rTemplate	:= ::[SHABLON_DOC]([CODE]=vCode);
 
 
	-- Подготовка доп. параметров
 
--	[STR].set_par(V_ADDS,'REPS_DATE',to_char(P_REPS_DATE,'dd/mm/yyyy'));
 
--	[STR].set_par(V_ADDS,'USER_NAME',P_USER_NAME);
 
 
	for	id in this.first .. this.last Loop
 
		stdio.put_line_buf
 
			('<% PLPCALL [RUNTIME].[PRINT_FORM]'
 
			||'( %PARAM%.P_TEMPLATE '	||'=> '''|| rTemplate%id	||''' '
 
			||', %PARAM%.P_THIS_OBJ '	||'=> '''|| id				||''' '
 
			||', %PARAM%.P_THIS_CLASS '	||'=> ''ABC_TEMP'' '
 
			||', %PARAM%.P_ADDS '		||'=> %VAR%.V_ADDS '
 
			||') %>'
 
			);
 
	End Loop;
 
 
	Exception
 
		When NO_DATA_FOUND Then
 
			pragma error('Пожалуйста, в справочнике "Справочник шаблонов документов" ::[SHABLON_DOC] зарегистрируйте шаблон с кодом "'||vCode||'"');
 
End; | 
			 
		  | 
	 
	
		  | 
	 
	
		Volod Эксперт
 
  Вступление в Клуб: 19.09.2007
  | 
		
			
				 Чт Июл 30, 2015 11:54    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				
 
Да, формулировка подкачала, имел ввиду совсем другое. | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |