Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как использовать Transition Table в TRIGGER-е
|
|||
|---|---|---|---|
|
#18+
Добрый день! Имеем: DB2 9.1 for LUW. Хочется: иметь "универсальную" хранимую/функцию для обработки данных, переданных триггерами. Если грубо, то скажем есть 10 VIEW, на которые навешаны INSTEAD OF триггеры, хочется обрабатывать их данные в одной хранимой, логика обработки одинаковая, а вот кол-во и типы столбцов могут быть разными. Можно завести десять DDL для хранимых, но чтобы они ссылались на одну функцию в терминах C/C++. Проблема: При передаче параметров от триггера классическим способом они будут передаваться по одному, т.е. нужно будет обрабатывать список параметров неизвестной длины. Это решаемо, но непонятно как определять тип передаваемого параметра. Как вариант, триггер может объявлять Transition Table, но тогда непонятно как до нее "добраться" из функции или процедуры. Для DB2 V9.1 for z/OS это решается через локатор для таблицы Accessing transition tables in a user-defined function or stored procedure . Для DB2 for LUW я аналогичного функционала не нашел. Как SESSION-таблицы эти таблицы похоже тоже не существуют. Как выходить из такой ситуации? Очень не хочется писать идентичный по сути код несколько раз. Процедура-обработчик нужна внешняя на C/C++, т.к. нужно выполнять некоторые External Actions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 14:53 |
|
||
|
Как использовать Transition Table в TRIGGER-е
|
|||
|---|---|---|---|
|
#18+
Добрый день. Для передачи транзитивной таблицы в процедуру самый легкий способ - это через постоянную таблицу со всеми полями транзитивной + {appl_id_ varchar(128) - для функции application_id()}. Т.е. в триггере вам придется: 1. delete from persistent where appl_id_ = application_id() 2. insert into persistent select trans_new.*, application_id() from trans_new ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 17:48 |
|
||
|
Как использовать Transition Table в TRIGGER-е
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinДобрый день. Для передачи транзитивной таблицы в процедуру самый легкий способ - это через постоянную таблицу со всеми полями транзитивной + {appl_id_ varchar(128) - для функции application_id()}. Т.е. в триггере вам придется: 1. delete from persistent where appl_id_ = application_id() 2. insert into persistent select trans_new.*, application_id() from trans_new Спасибо, вариант конечно, но получается что нужно еще создавать временные таблицы по числу VIEW. Да, получается что на z/OS красивше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2008, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=87&tid=1603548]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 360ms |

| 0 / 0 |
