Введение в СУБД "Oracle". Космачев В.М - 57 стр.

UptoLike

ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
57
Есть два вида курсоров: НЕЯВНЫЕ и ЯВНЫЕ. PL/SQL неявно объявляет курсор для любого предложения
манипулирования данными SQL, в том числе для запроса, возвращающего только одну строку.
Для запросов, возвращающих более одной строки, вы можете явно объявить курсор, чтобы обрабатывать
возвращаемые строки по одной.
Таким образом, каждое SQL утверждение, выполняемое сервером ORACLE, имеет индивидуальный курсор,
связанный с:
неявным курсором, объявленным для всех DML-утверждений;
явным курсором, объявленным и поименованным программистом.
Явный курсорэто поименованный запрос, содержащий некоторое фиксированное число строк в выборке. Чаще
всего курсор содержит данные одной строки выбираемой таблицы. По существу, курсор является окном, через
которое пользователь получает доступ к информации базы данных. Курсоры, в частности, могут использоваться для
присваивания конкретных значений переменным программы.
Объявление курсора:
CURSOR cursor_name IS select_statement;
Например:
DECLARE
CURSOR c1 IS
SELECT empno, ename, job FROM emp WHERE deptno = 20;
Множество строк, возвращаемых многострочным запросом, называется АКТИВНЫМ МНОЖЕСТВОМ. Его
размер равен числу строк, удовлетворяющих вашим условиям поиска. Как показывает рис.1.3, явный курсор
"указывает" на текущую строку в активном множестве. Это позволяет вашей программе обрабатывать строки по
одной за раз.
Рис.1.3. Обработка запроса
Запрос: SELECT empno, ename, job FROM emp WHERE deptno = 20;
Активное множество:
7369 SMITH CLERK
7566 JONES MANAGER
Курсор ──>
7788 SCOTT ANALYST
Текущая строка
7876 ADAMS CLERK
7902 FORD ANALYST
Обработка многострочного запроса напоминает обработку файла. Например, программа на языке COBOL
открывает файл, обрабатывает записи, а затем закрывает файл. Аналогично, программа PL/SQL открывает курсор,
обрабатывает строки, возвращенные запросом, а затем закрывает курсор. Точно так же, как указатель файла
отмечает текущую позицию в открытом файле, курсор отмечает текущую позицию в активном множестве.
Рассмотрим подробнее работу явного курсора:
DECLARE - Создает именованную SQL область
OPEN - Определяет активное множество
FETCH - Передает текущий ряд в переменную
EMPTY - Проверка на существование ряда, возврат к FETCH , если ряды существуют
CLOSE - Реализовать активное множество
При этом должны выполняться следующие правила:
нельзя включать INTO в предложение курсора;