Удалить BLOB-данные
Назначение
Команда
CBLB
предназначена для удаления всех данных BLOB-столбца.
Параметры вызова
inter(CBL, NULL, NULL, [CondBuf], NULL);
Входные данные
Входными данными является контрольный блок
CBL
.
В нем должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер канала | |
Command
|
"CBLB"
| |
Node
| Имя ЛИНТЕР-сервера | |
RowCount
| Порядковый номер BLOB-столбца |
Выходные данные
Выходными данными является контрольный блок
CBL
.
В нем будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
SysErr
| Код состояния ОС |
Описание
Команда
CBLB
удаляет BLOB-данные из
указанного
BLOB-столбца
текущей
записи канала.
Если номер BLOB-столбца не задан, то поведение команды не определено.
Примечание
Команда
COBJ
,
используемая для удаления BLOB-данных в записи с одним
BLOB-столбцом (т.е. без указания номера BLOB-столбца), устарела и
не
рекомендуется для применения.
Текущей записью в канале является последняя выбранная, добавленная
или измененная запись. Таким образом,
команда
CBLB
имеет смысл только после выполнения следующих запросов:
-
SELECT;
-
INSERT;
-
UPDATE.
Запросы INSERT и UPDATE должны быть обновляемыми.
Команда
CBLB
удаляет BLOB-данные полностью. После выполнения операции длина
данных становится равной 0, тип BLOB-данных не изменяется.
Команда
CBLB
не изменяет текущее положение записи в канале.
Коды завершения
Код | Описание | |
---|---|---|
NORMAL | Нормальное завершение | |
ERRSEQCOM |
Неправильная последовательность команд (команда
CBLB
подана вне контекста текущего запроса канала)
| |
COLNOTBLOB | Заданный столбец не является BLOB-столбцом | |
ERRVALRANGE | Неправильный номер столбца |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterCBLB(TCBL *pCBL) { memcpy(pCBL- >Command, "CBLB", 4); pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, NULL, NULL, NULL, NULL); return pCBL- >CodErr; }
Пример использования запросов обработки BLOB-данных
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "inter.h" #include "exlib.h" #ifndef WINCE int main() #else int exblob() #endif { TCBL CBLconnect; L_CHAR Name_Pass[] = "SYSTEM/MANAGER8"; L_CHAR Node[] = " "; L_WORD Priority = 0; L_LONG PrzExe = M_EXCLUSIVE | Q_ENCODE | M_BINARY; L_LONG Err; L_CHAR Buf[] = "Part of blob Part of blob Part of blob"; memset(&CBLconnect,0,sizeof(TCBL)); Err=LinterOPEN(&CBLconnect, Name_Pass, Node, Priority, PrzExe); if (Err != NORMAL) PrintError(&CBLconnect); printf("Connect to RDBMS Linter\n"); if (LinterNotSelect (&CBLconnect, "create table OBJ(OBJ blob);") != NORMAL) PrintError(&CBLconnect); if (LinterNotSelect(&CBLconnect, "INSERT INTO OBJ VALUES(NULL);") != NORMAL) PrintError(&CBLconnect); Err=LinterABLB (&CBLconnect, Buf, (L_WORD) strlen(Buf),1); if (Err != NORMAL) PrintError(&CBLconnect); printf("ABLB\n"); Err=LinterSLCT (&CBLconnect, PrzExe, "select * from OBJ;", Buf, sizeof(Buf), NULL); if (Err != NORMAL) PrintError(&CBLconnect); printf ("seleted BLOB length=%ld\n", *(L_LONG *) Buf); Err=LinterGBLB (&CBLconnect, 1, Buf, sizeof(Buf) - 1); if (Err != NORMAL) PrintError(&CBLconnect); printf("GBLB:\n"); printf("\t%s\n", Buf); Err=LinterGBLB (&CBLconnect); if (Err != NORMAL) PrintError(&CBLconnect); printf("GBLB\n"); if (LinterNotSelect (&CBLconnect, "drop table OBJ;") != NORMAL) PrintError(&CBLconnect); printf("End Example\n"); return 0; }