Типизация BLOB-значения
Синтаксис
modify_blob_type([< курсор >, ]< тип BLOB-значения >[, < номер >]);
< курсор >
– курсорная переменная, для которой устанавливается номер BLOB-столбца (если не задан, то функция применяется для канала оператора EXECUTE);
< тип BLOB-значения >
– переменная типа INTEGER, значение которой используется для идентификации данных BLOB-столбца (текст, графика, анимация, музыка и т.п.);
< номер >
– порядковый номер BLOB-столбца.
Описание
Функция изменяет тип BLOB-значения заданного столбца в выборке. Типизация BLOB-значений регламентируется пользователем. Если аргумент < номер >
не задан, по умолчанию используется первый BLOB-столбец выборки.
Пример
Создается таблица tblob, в нее заносятся 10 записей, затем устанавливаются типы BLOB-значений. В конце select-запросом проверяются установленные типы BLOB-значений.
create or replace procedure blobtest(in n int default 10) declare var s cursor(i int, b1 blob, b2 blob); // var i,j int default 1; // var b byte(100); // exception addbloberr for custom 1; // code execute "create or replace table tblob(i int, b1 blob, b2 blob);"; // while i < = n loop execute direct "insert into tblob(i,b1,b2) values(?, NULL, NULL);" using i; // j := 0; // while j < i * 3 loop b[j] := i * 10 + j; // j := j + 1; // endloop if add_blob(b, i * 3, 2) < > 0 then signal addbloberr; // endif if add_blob(b, i * 3, 3) < > 0 then signal addbloberr; // endif modify_blob_type(i + 100, 2); // i := i + 1; // endloop open s for direct "select i, b1, b2 from tblob;"; // while not outofcursor(s) loop modify_blob_type(s, s.i + 1000, 3); // fetch s; // endloop exceptions when others then resignal; // end; execute blobtest(); select i, getlong(b1, 20), getlong(b2, 20) from tblob;