Я думаю, что было бы лучше использовать курсоры самостоятельно, чтобы вы фактически выполняли только один запрос. Вероятно, вы не используете мейнфрейм DB2, но версия LUW (Linux / Unix / Windows) также может иметь функцию для тайм-аута «плохо себя ведущих» сеансов (тех, которые удерживают блокировки ресурсов без активности), что предотвратит накопление осиротевших курсоров .
В DB2 / z вы должны установить IDTHTOIN на количество секунд, которое вы хотите использовать в качестве тайм-аута, и COMTSTAT = INACTIVE, чтобы защитить потоки, удерживающие ресурсы, которые были , показывая некоторую активность.
Но, как я уже сказал, вы, вероятно, используете LUW-версию, и я понятия не имею, имеет ли этот вариант аналогичную функциональность (я бы удивился, если бы этого не произошло).
Если у вас есть уникальный идентификатор, который вы можете использовать для каждой отображаемой записи, вы можете просто запомнить идентификатор последней в своем текущем списке, вместо:
select * from tbl fetch first 200 rows only
использование:
select * from tbl where id > id_of_last fetch first 200 rows only
Это, по крайней мере, уменьшит трафик, передаваемый по проводам.