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