| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| 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    |   |  
				| Полезность: Нет оценки 
 |  
				| Да, формулировка подкачала, имел ввиду совсем другое.
 |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |