@ lomaxx, @ChanChan: насколько мне известно, курсоры являются проблемой только для SQL Server и Sybase (варианты T-SQL). Если ваша база данных - Oracle, то курсоры - ваш друг. Я видел несколько случаев, когда использование курсоров фактически улучшало производительность. Курсоры - невероятно полезный механизм, и говорить, что такие вещи, как «если вы используете курсор, мы вас увольняем», немного смешно.
Сказав это, вы хотите оставить курсор открытым только для требуемого абсолютного минимума. Указание максимального времени было бы произвольным и бессмысленным без понимания предметной области.