Поиск

L2AVADON

СТАТЬИ

Мягкое закрытие курсора
ГлавнаяЯзык PL/SQLКурсоры → Мягкое закрытие курсора

При разработке приложений я всегда стараюсь использовать любые возможности, приводящие к повышению производительности. Я все­гда задаю себе вопросы - например, если функция многократно вызы­вается в течение одного сеанса Oracle, почему бы мне не кэшировать какие-то общие данные вместо того, чтобы каждый раз запрашивать их? Или, если мне известно, что базовые данные меняются один раз в час, почему бы не сохранить результаты запроса и тем самым избе­жать повторных запросов в течение последующих 60 минут?

Одно из предположений Oracle заключается в том, что если курсор был однажды использован в сеансе, то он когда-нибудь будет использован повторно (даже если был явно закрыт). Прием, реализующий это пред­положение, называется мягким закрытием, или, как я это называю, «закрытием без закрытия».

Рассмотрим простой пример с неявным курсором.

SQL> SELECT NULL 2 FROM DUAL;

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18