Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Где ошибка в триггере? / 2 сообщений из 2, страница 1 из 1
29.06.2010, 16:27
    #36713411
stavelot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка в триггере?
В DB2 9.5 создаю триггер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE TRIGGER TRIG1
AFTER INSERT
ON TBN1
REFERENCING NEW_TABLE AS inserted
FOR EACH STATEMENT
MODE DB2SQL
BEGIN ATOMIC
   DECLARE v_IdGoReal INTEGER;
   DECLARE v_IdParentUID INTEGER;
   DECLARE Fetch_stat INTEGER DEFAULT  0 ;
   DECLARE cur_TBN1I CURSOR    FOR
   SELECT * FROM Inserted I;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET Fetch_stat = - 1 ;
   IF EXISTS(SELECT  1  FROM Inserted I WHERE I.NewUID IS NULL) then
	
      OPEN cur_TBN1I;
      FETCH cur_TBN1I INTO v_IdGoReal,v_IdParentUID;
      WHILE Fetch_stat =  0  DO
         SWL_Label:
         WHILE  1  =  1  DO
            UPDATE TBN1 SET NewUID = v_IdParentUID WHERE IdGoReal = v_IdGoReal;
            FETCH cur_TBN1I INTO v_IdGoReal,v_IdParentUID;
            LEAVE SWL_Label;
         END WHILE;
      END WHILE;
      CLOSE cur_TBN1I;
   end if;
END

Получаю ошибку:

SQL0104N Обнаружен неправильный элемент "FOR" после текста "cur_TBN1I CURSOR". Список возможных правильных элементов: "<SQL_variable_condition_declaration> ".
...
Рейтинг: 0 / 0
29.06.2010, 18:58
    #36713928
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка в триггере?
stavelot,

Нельзя в compound sql (dynamic) DECLARE CURSOR.
Используйте FOR.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Где ошибка в триггере? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]