Инструкция FETCH
Инструкция FETCH — это одна из четырех команд, используемых при обработке курсоров, наряду с DECLARE, OPEN и CLOSE. Курсоры позволяют вести обработку по одной строке, а не работать сразу со всем набором. Инструкция FETCH помещает курсор в конкретную строку и извлекает эту строку из результирующего набора.
Курсоры имеют в реляционных базах особую важность, поскольку такие базы основаны на обработке наборов данных, а большинство клиентских языков программирования основываются на работе со строками. Так что курсоры позволяют проводить построчные операции вместо операций со всем набором сразу, что лучше соответствует возможностям клиентской программы.
SQL 2003 Syntax
FETCH [{NEXT | PRIOR | FIRST | LAST |
{ABSOLUTE | RELATIVE int}}
FROM] имя_курсора [INTO переменная 1 [, …]]
NEXT
Указывается, что курсор должен вернуть запись, которая идет сразу за текущей, и сделать текущей ту запись, которую курсор вернул. Предложение FETCH NEXT задано для инструкции FETCH по умолчанию. При этом первая запись извлекается, если инструкция FETCH осуществляет первую выборку для курсора.
PRIOR
Указывается, что курсор должен вернуть запись, которая идет непосредственно перед текущей, и сделать текущей ту запись, которую курсор вернул. Инструкция FETCH PRIOR не возвращает запись, если она осуществляет первую выборку для курсора.
FIRST
Указывается, что курсор должен вернуть запись, которая является для курсора первой, и сделать ее текущей.
LAST
Указывается, что курсор должен вернуть запись, которая является для курсора последней, и сделать ее текущей.
ABSOLUTE int
Указывается, что курсор должен вернуть запись, которая имеет номер int в наборе записей курсора, считая сверху (если int — положительное целое число) или считая снизу (если int — отрицательное целое число), и сделать эту запись текущей для курсора. Если int ~ О, строка не возвращается. Если значение int переносит курсор за пределы набора, тогда курсор устанавливается после последней строки (если int -положительное число) или перед первой строкой (если int — отрицательное число).
RELATIVE int
Указывается, что курсор должен вернуть запись, идущую через int записей после текущей (если int — положительное число) или через int записей перед текущей (если int — отрицательное число). Если int= О, возвращается текущая строка. Если значение int переносит курсор за пределы набора, тогда курсор устанавливается после последней строки (если int — положительное число) или перед первой строкой (если int — отрицательное число).
[FROM] имя_курсора
Указывается имя открытого курсора, из которого вы хотите извлечь строки. Курсор должен быть заранее определен и создан при помощи предложений DECLARE и OPEN: Использование ключевого слова FROM является необязательным, но поощряется.
INTO переменная! [, …]
Данные из каждого столбца курсора сохраняются в локальной переменной. Каждый столбец курсора должен иметь в предложении INTO соответствующую переменную совпадающего типа данных. Каждое значение в столбце напрямую связано с переменными в соответствующих порядковых положениях.