Добавление данных в конец BLOB-значения
Синтаксис
add_blob([<курсор>,] <значение>[, <размер>][, <номер BLOB-столбца>]);
<курсор> – курсорная переменная;
<значение> – переменная типа BYTE/VARBYTE или значение любого другого скалярного типа;
<размер> – целочисленное положительное выражение;
<номер BLOB-столбца> – порядковый номер BLOB-столбца в текущей записи выборки данных, отсчёт начинается с 1.
Описание
Функция добавляет порцию данных в конец BLOB-значения заданного BLOB-столбца текущей записи.
Параметр <значение> определяет добавляемую порцию данных.
Возможны два случая:
-
если это переменная типа
BYTE, то в качестве порции данных берется соответствующая последовательность байт, указанная в параметре<размер>длины. Это самый общий способ, так как он позволяет записывать любые данные; -
если
<значение>– это выражение других типов, то к BLOB-значению добавляется двоичное представление порции данных для конкретной машины. В частности, значения типаDATEзаписываются как два четырехбайтовых числа (типаINT), первое из которых содержит количество дней, прошедших с начала нашей эры, а второе – количество тиков (сотых долей секунды), прошедших с начала дня (именно так представляются значения типаDATEвнутри подсистемы хранимых процедур). Значения типаCHARиVARCHARзаписываются как два байта длины строки, два байта кодировки и соответствующее количество байт самой строки после них. В этом случае длину порции данных указывать не требуется, так как она известна. Для значений типаNCHARиNVARCHARзапись аналогична, за исключением двух байт кодировки. Они отсутствуют, так как для данных типов она по умолчаниюUTF-16.
Примечания
-
В обоих случаях, если длина переменной
<значение>больше длины, указанной в параметре<размер>, то добавляемая порция данных будет обрезана до заданной в параметре<размер>длины; если меньше – дополнена нулями. -
Все данные, добавленные в BLOB-значение, могут быть адекватно считаны с помощью функций чтения read_blob.
Параметр <размер> можно определить только для типа BYTE.
Для всех остальных типов поле <размер> интерпретируется как <номер BLOB-столбца>.
Возвращаемое значение
Функция возвращает код завершения СУБД ЛИНТЕР.