Поскольку пул соединений используется, хранимая процедура должна вернуть уровень изоляции к своему предыдущему значению, чтобы избежать непредвиденных результатов, когда другое приложение использует такое же соединение. Уровень изоляции по умолчанию зависит от режима ведения журнала базы данных:
- Для незарегистрированной базы данных это будет "Dirty Read" (отображается как NL командой onstat -g ses).
- Для базы данных режима ANSI это будет «Повторяемое чтение».
- Для других зарегистрированных баз данных это будет «Committed Read».
Параметр onconfig USELASTCOMMITTED также можно использовать для изменения способа использования уровня изоляции по умолчанию. Дополнительную информацию об этом можно найти в Центре знаний (поиск по USELASTCOMMITTED).
Сессия может определить свой текущий уровень изоляции, используя запрос к базе данных sysmaster. Этот запрос был запущен в Informix 12.10, но также должен быть действительным для 11.70:
select tx.isolevel
from sysmaster:systxptab tx, sysmaster:sysrstcb r, sysmaster:sysscblst s
where s.address = r.scb and tx.owner = r.address
and s.sid = dbinfo("sessionid");
Возвращает уровень изоляции в виде целого числа, которое является внутренним значением - например, зафиксированное чтение имеет значение 2. Я не верю, что отображение уровня изоляции в целочисленное значение публикуется, поэтому вам придется поэкспериментировать с установкой различных уровней. для сеанса, а затем запустите указанный выше запрос.