Удалить 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;
}