В настоящее время я работаю над системой, которая использует COBOL для подключения к DB2. Пример просмотра будет инициирован следующим оператором:
EXEC SQL
DECLARE <cursor name> CURSOR FOR
SELECT
<field names>
FROM <table name>
WHERE
<conditions>
ORDER BY
<key fields>
FOR FETCH ONLY
OPTIMIZE FOR 1 ROW
END-EXEC.
EXEC SQL
OPEN <cursor name>
END-EXEC.
Как только просмотр будет определен как успешный, последующие чтения таблицы будут выполняться с использованием следующего:
EXEC SQL
FETCH <cursor name>
INTO
<variable names>
END-EXEC.
Если, например, я просматриваю таблицу и возвращаемый набор результатов составляет около 100 000 строк, на обработку уйдут часы. Это было бы нормально, если бы я мог гарантировать, что другие пользователи системы не столкнутся с взаимоблокировками (-911), если они обрабатывают ту же таблицу, которую просматриваю я (обработка будет означать выбор, обновление и, возможно, удаление записей).
Как я могу определить, может ли операция просмотра, которую я выполняю, привести к взаимоблокировкам для других пользователей?
(ПРИМЕЧАНИЕ: я не делаю никаких обновлений, просто извлекаю данные)