Добавить порцию BLOB-данных
Назначение
Команда
ABLB
предназначена для добавления заданной порции BLOB-данных.
Параметры вызова
inter(CBL, NULL, NULL, [CondBuf], RowBuf);
Входные данные
Входными данными являются:
-
контрольный блок
CBL
; -
буфер записи
RowBuf
.
В контрольном блоке должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер канала | |
Command
|
"ABLB"
| |
RowId
| Тип добавляемых данных | |
LnBufRow
| Длина буфера записи (размер добавляемой порции данных в байтах) | |
Node
| Имя ЛИНТЕР-сервера | |
RowCount
| Порядковый номер BLOB-столбца |
Буфер записи
RowBuf
должен содержать добавляемую порцию BLOB-данных.
Выходные данные
Выходными данными является контрольный блок
CBL
.
В нем будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
LnBufRow
| Фактическая длина буфера выборки данных | |
SysErr
| Код состояния ОС |
Описание
Максимальный размер порции BLOB-значения – 16*4048 байт.
Максимальный размер BLOB-значения – 2 Гбайт.
Добавляемые данные помещаются в конец BLOB-значений.
При добавлении BLOB-данных СУБД ЛИНТЕР не контролирует тип добавляемых данных, поэтому, если добавляемые порции содержали разные типы BLOB-значения, то они все равно будут добавлены к BLOB-значению; окончательный тип BLOB-значения устанавливается по последней добавленной порции.
Команда
ABLB
добавляет порцию BLOB-данных к
текущему
BLOB-значению (BLOB-значению текущей записи выборки данных) в
указанном
BLOB-столбце записи.
Если номер BLOB-столбца не задан, то поведение команды не определено.
Примечание
Команда
AOBJ
,
используемая для добавления порции BLOB-данных в запись с одним
BLOB-столбцом (т.е. без указания номера BLOB-столбца), устарела и
не рекомендуется для применения.
Текущей записью в канале является последняя выбранная, добавленная
или измененная запись. Таким образом,
команда
ABLB
имеет смысл только после выполнения следующих запросов:
-
SELECT;
-
INSERT;
-
UPDATE.
Запросы INSERT и UPDATE должны быть обновляемыми.
Команда
ABLB
не изменяет текущее положение записи в канале.
Коды завершения
Код | Описание | |
---|---|---|
NORMAL | Нормальное завершение | |
ERRPARTBL | Размер добавляемой порции больше 16*4048 байтов | |
EORR | Превышен допустимый размер данных BLOB-столбца | |
ERRSEQCOM |
Неправильная последовательность команд (команда
ABLB
подана вне контекста текущего запроса канала)
| |
COLNOTBLOB | Заданный столбец не является BLOB-столбцом | |
ERRVALRANGE | Неправильный номер столбца |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterABLB(TCBL *pCBL, void *Out, L_WORD OutLen, L_WORD numCol) { memcpy(pCBL- >Command, "ABLB", 4); pCBL- >LnBufRow=OutLen; pCBL- >RowCount = numCol; pCBL- >RowId = 1; pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, NULL, NULL, NULL, Out); return pCBL- >CodErr; }