Добавление BLOB-данных

Назначение

Добавить порцию BLOB-данных.

Синтаксис

 
<​добавить BLOB-данные​>::=
EXEC SQL [ AT <​имя соединения​> ][ <​номер BLOB-столбца​>]
BLOB ADD FROM:<​буфер​>
[ WHERE CURRENT OF {<​имя курсора​> |<​имя курсорной переменной​>}];
<​номер BLOB-столбца​>::= {<​числовой литерал​>| <​переменная основного языка​>}
<​буфер​>::= <​переменная основного языка​>

Описание

  1. <​Имя соединения​> определяет соединение, по которому открыт курсор. Значение параметра может быть задано переменной типа «соединение» (DATABASE) либо символьной константой. В любом случае заданное значение должно быть ранее использовано в операторе CONNECT. Если параметр <​имя соединения​> опущен, выборка BLOB-данных выполняется по неименованному соединению.

  2. Параметр <​номер BLOB-столбца​> задает порядковый номер BLOB-столбца в записи, для которой осуществляется добавление порции BLOB-данных. Нумерация BLOB-столбцов начинается с 1. Если параметр не задан, по умолчанию принимается 1.

  3. Параметр <​буфер​> задает имя переменной основного языка типа CHAR, BIT, VARCHAR, VARBIT, которая идентифицирует буфер памяти, содержащий порцию добавляемых BLOB-данных. Размер порции данных (буфера) не должен превышать 4000 байт.

  4. Конструкция WHERE CURRENT OF <​имя курсора​> используется для указания записи, куда производится вставка. Запись должна быть выбрана (OPEN, FETCH).

  5. Параметр <​имя курсора​> задает курсор, по которому осуществляется выборка записей для последующего добавления к ним BLOB-данных. Курсор предварительно должен быть открыт, и над ним необходимо выполнить, по крайней мере, одну операцию FETCH.

  6. Параметр <​имя курсорной переменной​> задает имя переменной типа «курсор» CURSOR. Переменная должна быть предварительно объявлена, под нее необходимо выделить память с помощью оператора ALLOCATE, она должна быть инициализирована путем присвоения ей результата «типа курсор» хранимой процедуры, и над этим курсором должна быть выполнена, по крайней мере, одна операция FETCH.

  7. Добавление BLOB-данных возможно только к записям, уже существующим в таблице на момент добавления, операция добавления BLOB-значения всегда выполняется над текущей записью. Поэтому курсор, заданный параметром <​имя курсора​> или <​имя курсорной переменной​>, должен быть открыт, и по нему необходимо произвести позиционирование той записи, к которой добавляется порция BLOB-данных. Для записей, ранее занесенных в таблицу, позиционирование выполняется с помощью оператора FETCH или UPDATE; вновь добавляемые записи становятся текущими при операции INSERT. BLOB-значение добавляется в конец существующих в столбце данных.

  8. При выполнении операции INSERT BLOB-столбец должен быть пропущен или иметь значение NULL. Он заполняется 24-байтовой строкой системной информации.

  9. Размер добавляемой порции равен размеру переменной, представляющей параметр <​буфер​>, если переменная имеет тип CHAR или BIT.

  10. Размер добавляемой порции BLOB-данных равен значению поля len (length для синтаксиса СУБД Ingres) переменной, представляющей параметр <​буфер​>, если переменная имеет тип VARCHAR, VARBIT.

  11. Если параметр WHERE CURRENT OF <​имя курсора​> не указан, будет произведена попытка выборки из BLOB-столбца, на который ссылается соединение (путем предварительного исполнения предложения оператором EXECUTE или EXECUTE IMMEDIATE SQL, позиционирующего на запись (SELECT, UPDATE, INSERT)).