Основы проектирования реляционных баз данных

Курсоры PL/SQL


Курсор - это поименованный запрос, содержащий некоторое число строк в выборке. По сути, курсор является некоторой структурой, через которую пользователь получает доступ к строкам результирующей таблицы запроса.

Рассмотрим пример доступа к информации, которая хранится в базе данных, с использованием курсоров.

Пусть в базе данных есть таблица базы данных с именем T01, такая, как показана ниже.

A1 number123
A2 varchar2(5)abccbabca
A3 char(1)ABC

Опишем курсор для доступа к данным таблицы Т01.

CURSOR cur01 IS SELECT * FROM T01;

Работа с курсором выполняется по следующему алгоритму:

  1. Открываем курсор:

    OPEN cur01;

  2. Выбираем данные из курсора в набор совместимых по типу переменных командой FETCH:

    FETCH cur01 INTO x1,x2,x3;

  3. Обрабатываем полученные данные.
  4. Выполняем команду FETCH для получения данных из следующей строки результирующей таблицы запроса.

И т.д.

В PL/SQL для курсоров предусмотрено несколько методов. Метод %NOTFOUND возвращает булевское истинное значение, если выборка в курсор пуста. Метод %FOUND возвращает булевское истинное значение, если выборка в курсор непуста. После открытия курсора до первой команды FETCH значения, возвращаемые этими методами, равны NULL. Метод %ROWCOUNT возвращает число строк в выборке после открытия курсора.

Предопределенный в PL/SQL метод %TYPE позволяет определить тип переменной как совпадающий с типом переменной таблицы.

PL/SQL поддерживает тип данных RECORD, который позволяет создать объект, соответствующий строке таблицы, как показано в примере ниже.

DECLARE TYPE t01_rec_type IS RECORD ( x1 t01.A1%TYPE, x2 t01.A2%TYPE, x3 t01.A3%TYPE); t01_rec t01_rec_type; … FETCH cur1 INTO t01_rec; DBMS_OUTPUT.PUT_LINE (cur1%ROWCOUNT||' '||t01_rec.x2); ѕ.



Содержание раздела