Уже конец
месяца, а я про pl/sql
ни слова не опубликовал, надо менять
ситуацию. Сегодня начну рассказ про
курсоры в pl/sql. Я хотел начать этот рассказ
еще вчера, но вчера было день
рождение у Skype, поэтому я решил
обязательно об этом рассказать, что и
сделал.
Курсоры
используются при выборке данных из
запроса в pl/sql-коде. Результат выполнения
SQL-запроса попадает в приватную рабочу
область (то есть — туда, где находятся
результирующие строки запроса). Есть
несколько различных способов получить
доступ к этой памяти. Одним из главных
способов и является использование
курсоров (и связанных с ним объектов).
Связанные
с курсорами объекты (такие, как курсорные
переменные и курсорные выражения) я
сегодня рассматривать не буду, когда-нибудь
в другой раз руки дойдут. Но познакомлю
вас (да и сам подробнее разберусь) с
явными и неявными курсорами.
Сегодня
будет только теоретическая статья, я в
ней расскажу про существование явных
и неявных курсоров. А в следующие разы
— уже более подробно, с практическими
примерами (их же нужно еще подготовить,
а я пока этого не сделал).
Неявный
курсор: яркий представитель — select …
into (в pl/sql-процедурах), остальные инструкции
DML (при использовании их в коде pl/sql) так
же являются неявными курсорами. Неявными
потому, что при (например) выборке данных
Oracle автоматом выполняет все необходимые
с этим курсором действия (открытие,
выборка данных и закрытие курсора).
Достоинства:
ничего не нужно делать самому, работает
быстро.
Недостатки:
повторяемость кода.
Явный
курсор: объявлять такие курсоры
необходимо явно (в блоке объявления
переменных). Все действия с такими
курсорами нужно прописывать самому —
открытие, выборку данных и закрытие
курсора.
Достоинства:
один и тот же курсор можно использовать
в разных местах pl/sql программы.
Недостатки:
надо писать дополнительный код.
Просто
говоря, курсоры — это средство, с помощью
которого можно получить данные в pl/sql
из select-запроса. В зависимости от того,
как вы получили эти данные и отличаются
друг от друга явные и неявные курсоры.
В одной из следующих статей я рассмотрю
сравнение по быстродействию явных и
неявных курсоров.
Комментариев нет:
Отправить комментарий