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

UptoLike

ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
58
если требуется использовать последовательность, то необходимо применить ORDER BY в предложении
курсора.
Рис.1.4. Управление курсором
OPEN Курсор ──> Активное множество
FETCH
Курсор ──>
7369 SMITH CLERK
Текущая строка
7566 JONES MANAGER
7788 SCOTT ANALYST
7876 ADAMS CLERK
7902 FORD ANALYST
CLOSE Курсор ──>
Предложение OPEN выполняет запрос, ассоциированный с курсором, идентифицирует активное множество и
позиционирует курсор перед его первой строкой. Предложение FETCH извлекает текущую строку и продвигает
курсор к следующей строке. После того, как обработана последняя строка, предложение CLOSE закрывает курсор.
Рассмотрим пример доступа к информации, хранимой в базе данных, с использованием курсоров. Пусть в базе данных
хранится таблица LECTURE, сформированная предложениями:
CREATE TABLE LECTURE
(LECT_ID NUMBER, SURNAME VARCHAR2(30), NAME VARCHAR2(10), FAC_ID NUMBER);
INSERT INTO LECTURE VALUES(1, 'Иванов’, 'Иван’, 100);
INSERT INTO LECTURE VALUES(2, 'Петров', 'Петр’, 400);
INSERT INTO LECTURE VALUES(3, 'Сидоров', 'Юрий’, 100);
Опишем курсор Cur1, ориентированный на получение данных из таблицы LECTURE:
DECLARE
CURSOR Curl IS SELECT * FROM LECTURE;
Первым шагом, необходимым для работы с курсором, является открытие курсора, которое выполняется командой:
OPEN Curl;
Выборка данных из курсора может быть выполнена в набор переменных подходящих типов, командой FETCH,
имеющей следующий синтаксис:
FETCH cursor_name INTO [fvariablel, variable2,...] | [record_name];
При этом должны соблюдаться следующие правила:
значения текущей строки записываются в переменные;
команда FETCH должна содержать то же самое количество переменных, которое содержит и курсор;
каждая переменная должна соответствовать колонкам;
Например:
FETCH Curl INTO Argl, Arg2, Arg3, Arg4;
Полностью процедура получения данных из таблицы LECTURE представлена в примере.
Пример 2.3.19
SQL> set serveroutput on;
SQL> set echo on;
SQL> set terrnout on;
SQL> DECLARE
Argl NUMBER; Переменная для первого аргумента
Arg2 VARCHAR2(30); Переменная для второго аргумента
АгgЗ VARCHAR2(10); Переменная для третьего аргумента
Arg4 NUMBER; Переменная для четвертого аргумента