powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 8.2 Expr-C проблема триггер + процедура
9 сообщений из 9, страница 1 из 1
DB2 8.2 Expr-C проблема триггер + процедура
    #34597280
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решили мы тут свой велосипед изобрести по учету кто чего менял

в БД есть табличка ComTimeProp вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE DB2ADMIN.COMTIMEPROP 
(
    GIDSBJCODE         DECIMAL( 10 ) NOT NULL,
    GID                DECIMAL( 10 )  GENERATED  BY DEFAULT AS IDENTITY( START WITH  1 , INCREMENT BY  1 , NO CYCLE,MINVALUE  1 ,MAXVALUE  9999999999 , CACHE  20  ),
    TIMEENTSTATUS      INTEGER     NOT NULL,
    TIMEINSERTDATETIME TIMESTAMP   NOT NULL,
    TIMEUPDATEDATETIME TIMESTAMP,
    TIMEUPDATESBJCODE  DECIMAL( 10 ),
    TIMEISUPDATE       INTEGER     NOT NULL,
    DAOSBJCODE         DECIMAL( 10 ) NOT NULL,
    DAOID              DECIMAL( 10 ) NOT NULL,
    TIMETAG            INTEGER     DEFAULT  2 ,
    TIMEEXPTYPE        DECIMAL( 1 ),
    TIMEEXCHPACKN      DECIMAL( 7 ),
    SBJCODE            DECIMAL( 5 ),
    USRSBJCODE         DECIMAL( 5 ),
    USRID              DECIMAL( 5 )
)
ALTER TABLE DB2ADMIN.COMTIMEPROP 
    ADD CONSTRAINT SQL031104163731510
PRIMARY KEY (GIDSBJCODE,GID)

есть табличка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE DB2ADMIN.COMAPPSESSION 
(
    APPID      VARCHAR( 128 ) NOT NULL,
    USRSBJCODE DECIMAL( 10 )  NOT NULL,
    USRID      DECIMAL( 10 )  NOT NULL,
    SBJCODE    DECIMAL( 10 )  NOT NULL,
    BEGINDATE  DATE         NOT NULL DEFAULT CURRENT DATE
)
ALTER TABLE DB2ADMIN.COMAPPSESSION 
    ADD CONSTRAINT SQL070525135522830
PRIMARY KEY (APPID)

наше приложение при старте пишет в нее SYSFUN.application_id()

так же есть процедура
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
CREATE PROCEDURE DB2ADMIN.UPDATE_COMTIMEPROP(pGIDSbjCode NUMERIC( 10 , 0 ), pGID NUMERIC( 10 , 0 ), pUpdMode INTEGER)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN ATOMIC
 DECLARE vUsrSbjCode NUMERIC( 10 ,  0 );
 DECLARE vUsrID NUMERIC( 10 ,  0 );
 DECLARE vSbjCode NUMERIC( 10 ,  0 );
 DECLARE vTimeEntStatus INTEGER;
 
 /* обработка режима обновления: 2 - режим удаления*/
 IF pUpdMode =  2  THEN
  SET vTimeEntStatus =  2 ;
 ELSE
  SET vTimeEntStatus =  1 ; 
 END IF; 
 
 /* получаем информацию о сессии: ключи пользователя и SbjCode */
 FOR getSessionInfo AS
  SELECT
    UsrSbjCode AS #v1,
    UsrID AS #v2,
    SbjCode AS #v3
  FROM
   ComAppSession
  WHERE
   (AppID = SYSFUN.application_id())
 DO
  SET vUsrSbjCode = #v1;
  SET vUsrID = #v2;
  SET vSbjCode = #v3;
 END FOR; 
 
 /* обновляем временные метки */
 UPDATE ComTimeProp a
  SET a.TimeUpdateDateTime = CURRENT TIMESTAMP,
      a.TimeIsUpdate =  1 ,
      a.TimeEntStatus = vTimeEntStatus,
      a.UsrSbjCode = vUsrSbjCode,
      a.UsrID = vUsrID,
      a.SbjCode = vSbjCode,
      a.TimeExchPackN = NULL
  WHERE (a.GIDSbjCode, a.GID) = (pGIDSbjCode, pGID);
END;

которая вызывается в триггере
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TRIGGER FndFlat_TU
AFTER UPDATE ON db2admin.FndFlat
REFERENCING 
OLD AS old 
FOR EACH ROW MODE DB2SQL
 CALL DB2ADMIN.UPDATE_COMTIMEPROP (old.GIDSbjCode, old.GID,  1 )

так вот если обновлять FndFlat вот так
Код: plaintext
update fndFlat set FltCurrentCost =  888  where FltID =  167101 
то триггер нормально срабатывает и все прописывает как надо

а вот если так:
Код: plaintext
update fndFlat set FltCurrentCost =  888 , GIDSbjCode =  15 , GID =  9247705  where FltID =  167101 

Т.Е. если указаны GIDSbjCode и GID то ломается с таким непонятным сообщением
[IBM][CLI Driver][DB2/NT] SQL0723N An error occurred in a triggered SQL statement in trigger "DB2ADMIN.FNDFLAT". Information returned for the error includes SQLCODE "-746", SQLSTATE "57053" and message tokens "DB2ADMIN.UPDATE_COMTIME|SQL070615155557700". SQLSTATE=09000


кто что может подсоветовать?
почему в одном случае триггер срабатывает а в другом нет? что такого может происходит в нутрях процедуры? и как бы можно было это поотлаживать?
может вставить како-то обработчик ошибок внутрь процедуры и писать в некую табличку сообщения? такое возможно?
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597611
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
версия бд и фикс?
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597674
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinверсия бд и фикс?
DB2 8.2 Express C fix 14
WIN
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597769
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey KuznetsovDB2 8.2 Express C fix 14
WINПопробуйте
Код: plaintext
1.
2.
3.
db2stop
db2set DB2_RESOLVE_CALL_CONFLICT=YES
db2start
call REBIND_ROUTINE_PACKAGE ('P','DB2ADMIN.UPDATE_COMTIMEPROP','CONSERVATIVE')
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597859
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinПопробуйте
Код: plaintext
1.
2.
3.
db2stop
db2set DB2_RESOLVE_CALL_CONFLICT=YES
db2start
call REBIND_ROUTINE_PACKAGE ('P','DB2ADMIN.UPDATE_COMTIMEPROP','CONSERVATIVE')


СПАСИБО!!!! Помогло!
Но что это было???
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597868
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kuznetsov
Но что это было???

Нашел
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0005669.htm
ближе к низу
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #34597873
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey KuznetsovСПАСИБО!!!! Помогло!
Но что это было??? Мутация!!!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
DB2 8.2 Expr-C проблема триггер + процедура
    #37567857
db2rp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein Alexey KuznetsovСПАСИБО!!!! Помогло!
Но что это было??? Мутация!!!

Марк, подскажите, где сейчас можно найти эту статью? спсб.
...
Рейтинг: 0 / 0
DB2 8.2 Expr-C проблема триггер + процедура
    #37568205
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
db2rpMark Barinsteinпропущено...
Мутация!!!

Марк, подскажите, где сейчас можно найти эту статью? спсб.
Database-db2-stored procedure problem -746
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 8.2 Expr-C проблема триггер + процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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