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

Списочная операция

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

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

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