На каком бы языке вы не общались с БД посредством ссылки на курсор, без программирования на PL/SQL не обойтись. Формальная сторона работы со ссылкой на курсор в PL/SQL обставлена просто.
Во-первых, чтобы завести в PL/SQL переменную-ссылку на курсор, нужно сначала описать ее тип. Это делается в разделе описания с помощью предложения TYPE:
TYPE имя_типа_ссылки_на_курсор IS REF CURSOR [RETURN тип_записи];
Если конструкция RETURN присутствует, ссылка на курсор называется строгой; если нет – нестрогой. Нестрогая может ссылаться на любой курсор (запрос), а строгая – только на тот, что возвращает результат указанного типа.
Пример описания обоих типов ссылки на курсор:
DECLARE TYPE any_curtype IS REF CURSOR; generic_curvar any_curtype;
TYPE departments_curtype IS REF CURSOR RETURN dept%ROWTYPE; departments_cur departments_curtype;
BEGIN NULL; END; /
Открытие курсора с помощью переменной-ссылки на курсор: OPEN ссылка_на_курсор FOR предложение_SELECT;
Команды FETCH и CLOSE используются как обычно, толькот вместо имени курсора указываем имя ссылки на курсор.
Во-вторых, для удобства программирования поддерживается «системный» тип SYS_REFCURSOR нестрогой ссылки на курсор. Так, в блоке выше, в разделе описания можно было бы не приводить предложение TYPE, а сразу сказать: generic_curvar SYS_REFCURSOR;
Тип SYS_REFCURSOR сокращает текст программы, а иногда позволяет и обойтись без создания служебного пакета (пример чего в этой статье не рассматривается).