Теория для лабораторной работы №5 - "PL/SQL – курсоры и хранимые процедуры", страница 6

Закрытие курсора

Оператор CLOSE запрещает курсор и активное множество становится неопределённым.

 

Синтаксис:

cursor_name

Имя не открытого явного курсора.

cursor_variable_name

 

Имя переменной курсора объявленной в окружении PL/SQL и передаваемая PL/SQL как связанная переменная.  Тип данных главной переменной курсора  совместим с возвращаемым типом любой переменной PL/SQL курсора. В операторах SQL главные переменные должны иметь префикс двоеточие.

 

Пример оператора CLOSE:  

 

CLOSE c1;

 

Когда курсор закрыт, его можно заново открыть. Любая другая операция с закрытым курсором вызывает исключение INVALID_CURSOR. 

Неявные курсоры

Oracle неявно открывает курсор для обработки каждого оператора SQL с которым не связан явно объявленный курсор. PL/SQL позволяет ссылаться на последний неявный курсор как курсор "SQL".

Нельзя использовать операторы OPEN, FETCH и CLOSE для управления курсором SQL. Но можно использовать атрибуты курсора для получения информации о последнем выполненном операторе SQL.

Цикл FOR для курсоров

В большинстве ситуаций, которые требуют явного курсора, можно вместо них использовать курсорный цикл FOR вместо операторов OPEN, FETCH и CLOSE.

Курсорный цикл FOR неявно объявляет индекс цикла как запись, которая представляет строку в таблице базы данных, открывает курсор, неоднократно выбирает строки значений из активного множества в поля записи, затем закрывает курсор, затем закрывает курсор, когда все строки были обработаны. В следующем примере, курсорного цикла FOR неявно объявляет emp_rec как запись

 

DECLARE

   CURSOR c1 IS

      SELECT ename, sal, hiredate, deptno FROM emp;

   ...

BEGIN