FETCH (BLOB)
Описание
FETCH отыскивает следующий сегмент из BLOB и помещает его в определенный буфер.
Переменная (host variable) segment_length, указывает число выбранных байтов. Это полезно, когда число возвращенных байтов меньше, чем переменная, для примера, при выборки последней части BLOB.
FETCH может возвращать два значения переменной SQLCODE:
- SQLCODE = 100 указывает, что не имеется больше сегментов BLOB, чтобы отыскивать.
- SQLCODE = 101 указывает, что часть сегмента прочитана и помещена в переменную локального буфера.
Обратите внимание: Чтобы гарантировать, что переменная буфера достаточно большая, для хранения буфера сегмента BLOB в течении операций FRETCH, используйте опцию SEGMENT в инструкции BASED ON.
Эта инструкция может быть использована в SQL.
Синтаксис
FETCH cursor INTO [:<buffer> [[INDICATOR] :segment_length];
| Аргумент | Описание |
|---|---|
|
|
|
cursor |
Имя открытого курсора BLOB из которого выбираются сегменты. |
:<buffer> |
Переменная базового языка для хранения сегментов выбираемых из BLOB столбца. Пользователь должен объявить буфер прежде выборки сегментов в него. |
INDICATOR |
Факультативное ключевое слово указывающее, что переменная базового языка предназначена, для указания количества байт, которое будет возвращено следующей инструкцией FETCH. |
:segment_length |
Переменная базового языка используется, чтобы указать число байт возвращенных FETCH. |
Примеры
Следующий код из внедренного приложения SQL, выполняет BLOB FETCH:
while (SQLCODE != 100)
{
EXEC SQL
OPEN BLOB_CUR USING :blob_id;
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
while (SQLCODE !=100 || SQLCODE == 101)
{
blob_segment{blob_seg_len + 1] = '\0';
printf("%*.*s",blob_seg_len,blob_seg_len,blob_segment);
blob_segment{blob_seg_len + 1] = ' ';
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
}
. . .
}
