Добавление данных в конец BLOB-значения

Синтаксис

add_blob([<курсор>,] <значение>[, <размер>][, <номер BLOB-столбца>]);

<курсор> – курсорная переменная;

<значение> – переменная типа BYTE/VARBYTE или значение любого другого скалярного типа;

<размер> – целочисленное положительное выражение;

<номер BLOB-столбца> – порядковый номер BLOB-столбца в текущей записи выборки данных, отсчёт начинается с 1.

Описание

Функция добавляет порцию данных в конец BLOB-значения заданного BLOB-столбца текущей записи.

Параметр <значение> определяет добавляемую порцию данных.

Возможны два случая:

  1. если это переменная типа BYTE, то в качестве порции данных берется соответствующая последовательность байт, указанная в параметре <размер> длины. Это самый общий способ, так как он позволяет записывать любые данные;

  2. если <значение> – это выражение других типов, то к BLOB-значению добавляется двоичное представление порции данных для конкретной машины. В частности, значения типа DATE записываются как два четырехбайтовых числа (типа INT), первое из которых содержит количество дней, прошедших с начала нашей эры, а второе – количество тиков (сотых долей секунды), прошедших с начала дня (именно так представляются значения типа DATE внутри подсистемы хранимых процедур). Значения типа CHAR и VARCHAR записываются как два байта длины строки, два байта кодировки и соответствующее количество байт самой строки после них. В этом случае длину порции данных указывать не требуется, так как она известна. Для значений типа NCHAR и NVARCHAR запись аналогична, за исключением двух байт кодировки. Они отсутствуют, так как для данных типов она по умолчанию UTF-16.

Примечания

  1. В обоих случаях, если длина переменной <значение> больше длины, указанной в параметре <размер>, то добавляемая порция данных будет обрезана до заданной в параметре <размер> длины; если меньше – дополнена нулями.

  2. Все данные, добавленные в BLOB-значение, могут быть адекватно считаны с помощью функций чтения read_blob.

Параметр <размер> можно определить только для типа BYTE.

Для всех остальных типов поле <размер> интерпретируется как <номер BLOB-столбца>.

Возвращаемое значение

Функция возвращает код завершения СУБД ЛИНТЕР.