Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC, одна сессия, хочу две транзакции / 7 сообщений из 7, страница 1 из 1
01.06.2018, 17:31
    #39654146
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
Есть сессия TOraSession.
К ней подвязаны две пишущие TOraQuery.
Хочу для первой TOraQuery выполнить роллбек, но чтобы записи второй TOraQuery не откатились.
TOraTransaction привязывается к сессии, а не к пишущему компоненту, или я что-то не так понял.

Например, у ФибПлюсов явно можно указать

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
pFIBQuery1.Database := pFIBDatabase1;
pFIBQuery1.Transaction := pFIBTransaction1;
pFIBQuery2.Database := pFIBDatabase1;
pFIBQuery2.Transaction := pFIBTransaction2;
//….
pFIBQuery1.ExecQuery;
pFIBQuery2.ExecQuery;
//...
pFIBTransaction1.Rollback;
pFIBTransaction2.Commit;



Как такое сделать в ODAC?
When a movie is over, it's a black
...
Рейтинг: 0 / 0
01.06.2018, 17:33
    #39654147
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
Создавать вторую сессию не предлагать
...
Рейтинг: 0 / 0
01.06.2018, 17:35
    #39654150
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
КвейдКак такое сделать в ODAC?

Фактически никак. Оракул умеет только одну транзакцию на коннект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.06.2018, 17:42
    #39654153
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
То бишь, выход - делать два коннекта?
...
Рейтинг: 0 / 0
01.06.2018, 17:52
    #39654155
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
Dimitry SibiryakovФактически никак. Оракул умеет только одну транзакцию на коннект.

а вот и нет, есть маааленькое исключение из правил: PRAGMA AUTONOMOUS_TRANSACTION

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DECLARE
   ...
   PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   -- UPDATE ...
   -- DELETE ...
   -- INSERT ...


   COMMIT;
END;
...
Рейтинг: 0 / 0
01.06.2018, 17:52
    #39654156
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
Теоретически ты можешь выйти на OCI уровень и попробовать играться с OCIAttrGet/Set для
того чтобы подменять текущую транзакцию перед вызовом методов разных датасетов, но я
сомневаюсь, что это а) работает вообще и б) сработает с ОДАК-ом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.06.2018, 23:25
    #39654243
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC, одна сессия, хочу две транзакции
Кроик СемёнDimitry SibiryakovФактически никак. Оракул умеет только одну транзакцию на коннект.

а вот и нет, есть маааленькое исключение из правил: PRAGMA AUTONOMOUS_TRANSACTION

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DECLARE
   ...
   PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   -- UPDATE ...
   -- DELETE ...
   -- INSERT ...


   COMMIT;
END;

Спасибо, такой способ подходит.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC, одна сессия, хочу две транзакции / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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