Простейшую форму курсора можно представить себе как указатель на таблицу в базе данных. Например, следующее объявление курсора связывает всю таблицу employee с курсором employee_cur:
CURSOR anployee_cur IS SELECT * FROM employee:
После объявления курсора его можно открыть:
OPEN employee_cur:
Далее можно выбирать из него строки:
FETCH employee_cur into employee_rec;
Окончив работу с курсором, его следует закрыть:
CLOSE employee_cur;
В рассматриваемом примере каждая выбранная из курсора запись представляет собой строку таблицы employee. С курсором можно связать любую допустимую инструкцию SELECT. В следующем примере в объявлении курсора объединяются
три таблицы:
DECLARE
CURSOR joke_feedback_cur
IS
SELECT J.name, R.laugh_volume, C.name
FROM joke J, response R, comedian С
WHERE J.joke_id = R.joke_id
AND J.joke_id = C.joker_id;
BEGIN
...
END;
В данном случае курсор действует не как указатель на конкретную таблицу базы данных — он указывает на виртуальную таблицу или неявное представление, определяемое инструкцией SELECT. (Мы называем такую таблицу виртуальной потому, что инструкция SELECT генерирует данные, имеющие табличную структуру, но эта таблица существует только временно, пока программа работает с возвращенными инструкцией данными.) Если тройное объединение возвращает таблицу, содержащую 20 строк и три столбца, курсор функционирует как указатель на эти 20 строк.
|