powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC, одна сессия, хочу две транзакции
7 сообщений из 7, страница 1 из 1
ODAC, одна сессия, хочу две транзакции
    #39654146
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сессия 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
ODAC, одна сессия, хочу две транзакции
    #39654147
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создавать вторую сессию не предлагать
...
Рейтинг: 0 / 0
ODAC, одна сессия, хочу две транзакции
    #39654150
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдКак такое сделать в ODAC?

Фактически никак. Оракул умеет только одну транзакцию на коннект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ODAC, одна сессия, хочу две транзакции
    #39654153
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То бишь, выход - делать два коннекта?
...
Рейтинг: 0 / 0
ODAC, одна сессия, хочу две транзакции
    #39654155
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ODAC, одна сессия, хочу две транзакции
    #39654156
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теоретически ты можешь выйти на OCI уровень и попробовать играться с OCIAttrGet/Set для
того чтобы подменять текущую транзакцию перед вызовом методов разных датасетов, но я
сомневаюсь, что это а) работает вообще и б) сработает с ОДАК-ом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ODAC, одна сессия, хочу две транзакции
    #39654243
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён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
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC, одна сессия, хочу две транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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