Синтаксис оператора для открытия курсора в Oracle следующий.
OPEN
Например, следующий оператор открывает курсор EMP_CURSOR: OPEN EMP_CURSOR
После того как курсор будет открыт, его содержимое (т. е. результат выполнения его запроса) можно прочитать с помощью оператора FETCH.
Синтаксис оператора FETCH в Microsoft SQL Server следующий.
FETCH
Синтаксис оператора в Oracle следующий.
FETCH CURSOR
[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]
[, : ГЛАВНАЯ_ПЕРЕМЕННАЯ
[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]
I USING DESCRIPTOR
Синтаксис оператора в dBase следующий.
FETCH
Например, чтобы извлечь содержимое курсора EMP_CURSOR и поместить в переменную с именем EMP_RECORD, можно использовать оператор FETCH следующего вида.
FETCH EMP_CURSOR INTO EMP_RECORD
Очевидно, если имеется возможность открыть курсор, должна быть предусмотрена и возможность закрыть его. Закрыть курсор несложно, только следует помнить, что после закрытия курсор становится недоступным для программ пользователей.
Закрытие курсора не обязательно освобождает выделенную для него память. В некоторых базах данных освободить занятую курсором память можно только явно с помощью команды DEALLOCATE. В результате выполнения этой команды освобождается занятая курсором память и назначенное курсору имя, которое теперь можно будет использовать снова. В других базах данных память освобождается автоматически при закрытии курсора. В таком случае ранее занятая курсором память оказывается доступной для других операций по мере необходимости.
В Microsoft SQL Server синтаксис операторов закрытия курсора и освобождения занимаемой курсором памяти будет следующим.
CLOSE
DEALLOCATE CURSOR
При закрытии курсора в Oracle занимаемые им ресурсы освобождаются автоматически без использования оператора DEALLOCATE. Синтаксис оператора закрытия курсора в Oracle следующий.
CLOSE
Для освобождения ресурсов в dBase объект должен быть закрыт и открыт вновь. Тогда ресурсы окажутся свободными, а имена - вновь доступными для использования. Синтаксис оператора закрытия курсора в dBase следующий.
CLOSE
Как вы могли видеть из предыдущих примеров вариации операторов в разных базах данных могут быть значительными, особенно если эти операторы используют возможности расширений SQL, о которых пойдет речь в ходе урока 24, "Расширения стандартного SQL". По поводу правильного использования курсоров в вашем конкретном случае обратитесь к документации, сопровождающей базу данных.
Возможность сохранять процедуры - основа процедурного программирования. Команды SQL (CREATE TABLE, INSERT, UPDATE, SELECT'и т.д.) дают вам возможность сообщить базе данных, что делать, но не как делать. Посредством составления процедур вы получаете возможность сообщить ядру базы данных, каким образом следует обрабатывать данные.
Функции вызываются процедурами. При вызове функции ей, как процедуре, могут передаваться параметры, затем функция вычисляет некоторое значение и возвращает его вызывающей процедуре для дальнейшего использования.
При сохранении процедуры в базе данных сохраняются также и все входящие в эту процедуру подпрограммы и функции (использующие SQL). Все эти сохраняемые процедуры предварительно анализируются и сохраняются в виде, готовом для немедленного использования по команде, инициируемой пользователем.
В Microsoft SQL Server процедуры создаются
CREATE PROCEDURE
[ [ (]
ТИП_ДАННЫХ [(ДЛИНА) | (ТОЧНОСТЬ] [, МАСШТАБ ])
[ = DEFAULT ][ OUTPUT ]]
[, @
ТИП_ДАННЫХ [(ДЛИНА) | (ТОЧНОСТЬ] [, МАСШТАБ ])
[ = DEFAULT ][ OUTPUT ]] [)]]
[ WITH RECOMPILE ]
AS ОПЕРАТОРЫ_SQL
В Oracle синтаксис оператора следующий.
CREATE [ OR REPLACE ] PROCEDURE