В обоих циклах выборки, описанных выше, необходимо обрабатывать курсоры явным образом с помощью операторов OPEN, FETCH и CLOSE. В PL/SQL имеется упрощенный вид цикла — курсорный цикл FOR, в котором управление обработкой курсора осуществляется неявно. Рассмотрим пример:
Необходимо отметить два важных аспекта, касающихся этого примера. Во-первых, запись v_StudentOata не объявляется в разделе объявлений блока. Эта переменная неявно объявляется компилятором PL/SQL, подобно индексу цикла в числовых циклах FOR. Она имеет тип c_HistoryStu-
dents%ROWTYPE, а ее область действия - цикл FOR. Неявное объявление индекса цикла и область действия этого объявления такие же, как и в числовом цикле FOR (см. главу 3). Поэтому нельзя присваивать какое-либо значение переменной цикла внутри курсорного цикла FOR.
Во-вторых, курсор c_HistoryStudents открывается, считывается и закрывается неявным образом. Открывается он перед началом цикла. Перед каждой итерацией цикла атрибут %FOUND проверяется для установления наличия строк в активном наборе. Когда активный набор полностью выбран, курсор закрывается с окончанием цикла.
Курсорные циклы FOR хороши тем, что, обеспечивая функциональные возможности циклов выборки курсоров, они делают процесс считывания данных доступнее и понятнее, упрощая при этом синтаксис программы.
< Предыдущая | Следующая > |
---|