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; } . . . }