Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Команда DECLARE CURSOR советы и хитрости Oracle

На платформе Oracle реализация курсоров весьма интересна. В действительности все инструкции Oracle, связанные с модификациями данных (INSERT, UPDATE, DELETE и SELECT), неявно открывают курсор. Например, программе на С, обращающейся к Oracle, не нужно подавать команду DECLARE CURSOR, чтобы извлекать данные построчно, поскольку такое поведение в Oracle задается по умолчанию. Поэтому инструкция DECLARE CURSOR используется только в конструкциях PL/SQL, таких, как хранимые процедуры, и не применяется в.скриптах на «чистом» SQL.

Поскольку в Oracle курсоры можно использовать только в хранимых процедурах и пользовательских функциях, они документируются в справочном материале PL/SQL, а не в справке по SQL.

В Oracle применяется вариант инструкции DECLARE CURSOR, поддерживающий параметризованный ввод. Синтаксис приводится ниже.

DECLARE CURSOR имя_курсора [(параметр тип_данных [, …])] IS инструкция_select
[FOR UPDATE [OF имя_столбца [, …]]}]

Где:

параметр тип Данных [, …])] IS инструкция_select

Определяется инструкция_select, которая используется для получения результирующего набора данных. Она служит той же цели, что и инструкция ANSI SQL FOR инструкция_select.

FOR UPDATE [OF имя_столбца]

Указывается, что курсор или конкретные столбцы курсора являются обновляемыми. В противном случае курсор считается курсором только для чтения. В Oracle переменные нельзя использовать в предложении WHERE инструкции SELECT, если только они заранее не объявлены как переменные. Параметрам в инструкции DECLARE значения не присваиваются. Значения присваиваются в инструкции OPEN. Это важно, потому что системная функция вернет одно и то же значение во всех строках в результирующем наборе курсора.

Источник