Типизация 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;