Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Получение текста WHEN из тела триггера  [new]
DB2_need_advice
Member

Откуда:
Сообщений: 6
подскажите, есть ли существующее решение (например. при помощи xml) из поля "text" в "syscat.triggers" получить текст условия в WHEN.
Например, из триггера:
CREATE TRIGGER TR_INSERT
BEFORE INSERT ON DB2_COPY.TRIG_TABLE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
WHEN ((NEW.AMOUNT < 0) OR (NEW.AMOUNT is NULL))
SET NEW.AMOUNT = 0;
получить запросом

((NEW.AMOUNT < 0) OR (NEW.AMOUNT is NULL))
25 апр 18, 15:36    [21368232]     Ответить | Цитировать Сообщить модератору
 Re: Получение текста WHEN из тела триггера  [new]
DB2_need_advice
Member

Откуда:
Сообщений: 6
Еще был бы очень благодарен за подсказку, что делать в такой ситуации.

Пытаюсь выделить часть UPDATE OF из тела триггера при помощи:

select xmlquery( 'fn:matches( $TEXT, ''^CREATE.+\sUPDATE\s+OF\s(.+)\sON\s.+\sBEGIN\s.+$'', ''si'' )' passing t.text as "TEXT")
from syscat.triggers t

При выполнении запроса возникает ошибка:
Lookup Error - DB2 Database Error: ERROR [08001] [IBM][DB2/NT64] SQL30081N  A communication error has been detected. Communication protocol being used: "TCP/IP".  Communication API being used: "SOCKETS".  Location where the error was detected: "91.222.250.86".  Communication function detecting the error: "recv".  Protocol specific error code(s): "10054", "*", "0".
ERROR [58005] [IBM][DB2/NT64] SQL0902C A system error occurred. Subsequent SQL statements cannot be processed. IBM software support reason code: "18".

И БД ложится напрочь.
Как мне кажется. что-то в настройках нужно добавить по памяти, но что ...
Буду благодарен за помощь.

Настройки БД:
Database server = DB2/NT54 9.1.C
26 апр 18, 13:10    [21370672]     Ответить | Цитировать Сообщить модератору
 Re: Получение текста WHEN из тела триггера  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 1011
DB2_need_advice,

Ошибка - смотреть db2diag.log и, возможно, создавать PMR.

Парсить языковые конструкции регулярками - дорога в ад.
Как Вам, к примеру, такой триггер:
CREATE TRIGGER "MY COOL UPDATE OF Trigger" ...
26 апр 18, 13:29    [21370772]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить