Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / узнать что транзакция уже открыта / 4 сообщений из 4, страница 1 из 1
24.12.2009, 14:26
    #36384599
aist-psk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать что транзакция уже открыта
подскажите как узнать в программе , что в текущей сессии транзакция уже открыта

просили спросить , сам я не прог

люди работают на 4gl


Александр
...
Рейтинг: 0 / 0
24.12.2009, 14:27
    #36384604
aist-psk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать что транзакция уже открыта
aist-psk,

p/s informix 7.30 - 7.31
...
Рейтинг: 0 / 0
24.12.2009, 14:36
    #36384618
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать что транзакция уже открыта
aist-pskподскажите как узнать в программе , что в текущей сессии транзакция уже открыта

просили спросить , сам я не прог

люди работают на 4gl


сказать begin work и словить эксепшин.

обычно узнавать не нужно, проще надо:
Код: plaintext
1.
2.
3.
4.
5.
procedure StartTransaction
begin
  EXEC "BEGIN WORK"
  если ошибка = already started то ничего не делать
    иначе поднимает(бросаем) эксепшин.
end;
...
Рейтинг: 0 / 0
01.02.2010, 14:54
    #36442328
sauron13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать что транзакция уже открыта
Журавлев Дениссказать begin work и словить эксепшин.

обычно узнавать не нужно, проще надо:
Код: plaintext
1.
2.
3.
4.
5.
procedure StartTransaction
begin
  EXEC "BEGIN WORK"
  если ошибка = already started то ничего не делать
    иначе поднимает(бросаем) эксепшин.
end;


Хм. Вообще-то в теле процедуры далее - надо знать открывалась транзакция в этой же процедуре или где-то извне. Ведь, если транзакция открывалась снаружи - значит там и commit/rollback должен делаться.

Мы делаем индикатор отрытия транзакции в текущей процедуре (_tc):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
define _tc int;

on exception ....
  if _tc =  0  then ROLLBACK; end if;

  raise exception ....
end exception; 
let _tc =  1 ;


begin on exception end exception; 
  BEGIN WORK; 
  let _tc =  0 ; 
end;

...............--Тело процедуры

if _tc =  0  then COMMIT; end if;
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / узнать что транзакция уже открыта / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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