Добавление данных в конец 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-столбца >.

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

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