Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-КН1.doc
Скачиваний:
18
Добавлен:
27.04.2019
Размер:
7.07 Mб
Скачать

Оператор читання чергового рядка курсора

Після відкриття курсора покажчик поточного рядка встановлюється перед першим рядком курсора. За стандартом оператор FETCH переміщує покажчик поточного рядка на наступний рядок та надає базовим змінним значення стовпців, яке відповідає поточному рядку. Простий оператор FETCH має наступний синтаксис:

FETCH <ім'я курсора> INTO <список змінних базової мови >

Наприклад: оператор читання чергового рядка курсора має наступний вигляд:

FETCH Debtor_reader_cursог INTO @first_name, @last_name, @adress, @home_phon, @work_phon, @title

Розширений оператор FETCH має наступний синтаксіс:

FETCH

[NEXT | PRIOR | FIRST | LAST

| ABSOLUTE {n | <ім'я змінної>}

|RELATIVE{n |<ім'я змінної>}]

FROM

<ім'я курсора> INTO <список базових змінних>

Тут параметр NEXT задає вибір наступного рядка після поточного з базового набора рядків, пов'язаних з курсором. Параметр PRIOR задає переміщення на попередній рядок по відношенню до поточного. Параметр FIRST задає переміщення на перший рядок набора, а параметр LAST задає переміщення на останній рядок набора.

Крім того, в розширеному операторі переміщення, припустимо зміститися одразу на заданий рядок, при цьому допустима як абсолютна адресація, задана параметром ABSOLUTE, так і відносна адресація, завдана параметром RELATIVE. При відносній адресації додатне число зсуває показник вниз від поточного запису, від'ємне число - зсув на вказане число позицій вгору від поточного запису.

Проте для використання розширеного оператора FETCH у відповідності із стандартом SQL2 опис курсора обов'язково повинен містити ключеве слово SCROLL. Іноді такі курсори називають в літературі курсорами що прокручуються. До стандарту ці курсори увійшли нещодавно, тому в промислових СКБД дуже часто оператори по роботі з подібними курсорами серьозно відрізняються. В технічній документації можна зустріти дві версії синтаксиса оператора FETCH: одну, яка відповідає стандарту, і другу, яка розширює стандарт додатковими можливостями, що надаються тільки даній СКБД для роботи з курсором.

Оператор закриття курсора

Оператор закриття курсора має простий синтаксис, він виглядає наступним чином:

CLOSE <ім'я курсора>

Оператор закриття курсора закриває тимчасову таблицю, створену оператором відкриття курсора, і припиняє доступ прикладної програми до цього об'єкта. Єдиним параметром оператора закриття є ім'я курсора. Оператор закриття може виконуватись в будь-який момент після оператора відкриття курсора.

В деяких промислових СКБД крім оператора закриття курсора використовується також оператор деактивації (знищення) курсора. Наприклад, в MS SQL Server 7.0 поряд із оператором закриття курсора використовується оператор

DEALLOCATE <ім'я курсора> .

Тут оператор закриття курсора не знищує набір даних, пов'язаний з курсором, він тільки закриває доступ до нього і знімає усі блокування, які раніше були пов'язані з даним курсором.

При виконанні оператора DEALLOCATE SQL Server звільнює розподілену пам'ять, використовувану командой опису курсора DECLARE. Після виконання цієї команди неможливе виконання команди ОРЕN для даного курсора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]