Добавление BLOB-данных
Назначение
Добавить порцию BLOB-данных.
Синтаксис
< добавить BLOB-данные >::= EXEC SQL [ AT < имя соединения > ][ < номер BLOB-столбца >] BLOB ADD FROM:< буфер > [ WHERE CURRENT OF {< имя курсора > |< имя курсорной переменной >}]; < номер BLOB-столбца >::= {< числовой литерал >| < переменная основного языка >} < буфер >::= < переменная основного языка >
Описание
-
< Имя соединения >
определяет соединение, по которому открыт курсор. Значение параметра может быть задано переменной типа «соединение» (DATABASE
) либо символьной константой. В любом случае заданное значение должно быть ранее использовано в оператореCONNECT
. Если параметр< имя соединения >
опущен, выборка BLOB-данных выполняется по неименованному соединению. -
Параметр
< номер BLOB-столбца >
задает порядковый номер BLOB-столбца в записи, для которой осуществляется добавление порции BLOB-данных. Нумерация BLOB-столбцов начинается с 1. Если параметр не задан, по умолчанию принимается 1. -
Параметр
< буфер >
задает имя переменной основного языка типаCHAR
,BIT
,VARCHAR
,VARBIT
, которая идентифицирует буфер памяти, содержащий порцию добавляемых BLOB-данных. Размер порции данных (буфера) не должен превышать 4000 байт. -
Конструкция
WHERE CURRENT OF < имя курсора >
используется для указания записи, куда производится вставка. Запись должна быть выбрана (OPEN
,FETCH
). -
Параметр
< имя курсора >
задает курсор, по которому осуществляется выборка записей для последующего добавления к ним BLOB-данных. Курсор предварительно должен быть открыт, и над ним необходимо выполнить, по крайней мере, одну операциюFETCH
. -
Параметр
< имя курсорной переменной >
задает имя переменной типа «курсор»CURSOR
. Переменная должна быть предварительно объявлена, под нее необходимо выделить память с помощью оператораALLOCATE
, она должна быть инициализирована путем присвоения ей результата «типа курсор» хранимой процедуры, и над этим курсором должна быть выполнена, по крайней мере, одна операцияFETCH
. -
Добавление BLOB-данных возможно только к записям, уже существующим в таблице на момент добавления, операция добавления BLOB-значения всегда выполняется над текущей записью. Поэтому курсор, заданный параметром
< имя курсора >
или< имя курсорной переменной >
, должен быть открыт, и по нему необходимо произвести позиционирование той записи, к которой добавляется порция BLOB-данных. Для записей, ранее занесенных в таблицу, позиционирование выполняется с помощью оператораFETCH
илиUPDATE
; вновь добавляемые записи становятся текущими при операцииINSERT
. BLOB-значение добавляется в конец существующих в столбце данных. -
При выполнении операции
INSERT
BLOB-столбец должен быть пропущен или иметь значениеNULL
. Он заполняется 24-байтовой строкой системной информации. -
Размер добавляемой порции равен размеру переменной, представляющей параметр
< буфер >
, если переменная имеет типCHAR
илиBIT
. -
Размер добавляемой порции BLOB-данных равен значению поля len (length для синтаксиса СУБД Ingres) переменной, представляющей параметр
< буфер >
, если переменная имеет типVARCHAR
,VARBIT
. -
Если параметр
WHERE CURRENT OF < имя курсора >
не указан, будет произведена попытка выборки из BLOB-столбца, на который ссылается соединение (путем предварительного исполнения предложения операторомEXECUTE
илиEXECUTE IMMEDIATE SQL
, позиционирующего на запись (SELECT
,UPDATE
,INSERT
)).