Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.27;
Скачать: CL | DM;

Вниз

InterBase&BLOB   Найти похожие ветки 

 
Patrick ©   (2002-06-04 09:22) [0]

Подскажите, пожалуйста, каким образом добавлять новую строку в поле типа BLOB в тексте хранимой процедуры (имеется ввиду, что в поле BLOB уже какая-то информация присутствует), я пробовал использовать курсор для добавления в BLOB поле, как описано в документации по IB,
declare aaa cursor for insert blob history into complect;
open aaa
и т.д.

система выдает ошибку, что выражение ааа не известно.
Какие еще есть варианты?


 
Alexandr ©   (2002-06-04 09:33) [1]

UDF надо заюзать


 
Digitman ©   (2002-06-04 10:00) [2]

Только в UDF.

Читай внимательно док-цию по IB от производителя (например, LangRef.pdf). В каждом топике против каждой языковой конструкции стоит примечание : available in. Далее следует одна или более фраза из следующих : SQL, DSQL, ISQL. В SP/View/триггерах допустим SQL-синтаксис только ISQL. А в ISQL никаких курсоров и в помине нет.


 
Digitman ©   (2002-06-04 10:11) [3]

Вот пример UDF, записывающей в BLOB-строку





function StringToBlob(Value: PChar; Blob: PBlob): PBlob; cdecl;

exports
StringToBlob;
...

function InternalPutBlob(Blob: PBlob; Buffer: Pointer; Size: Integer): ULong;
var
BytesToWrite: Integer;
begin
Result:= 0;
if Assigned(Blob) then with Blob^ do
if Assigned(BlobHandle) and Assigned(PutSegment) then while (Size > 0) do begin
BytesToWrite:= Min(DefaultBlobSegmentSize, Size);
PutSegment(BlobHandle, PChar(Buffer) + Result, BytesToWrite);
Dec(Size, BytesToWrite);
Inc(Result, BytesToWrite);
end;
end;

function StringToBlob(Value: PChar; Blob: PBlob): PBlob;
begin
Result:= Blob;
if Assigned(Result) and Assigned(Value) then
with Result^ do
try
if Assigned(BlobHandle) and Assigned(PutSegment) then
InternalPutBlob(Result, Value, StrLen(Value) + 1)
else
Result:= nil;
except
Result:= nil;
end;
end;


DECLARE EXTERNAL FUNCTION STRINGTOBLOB
CSTRING(32767),
BLOB
RETURNS PARAMETER 2
ENTRY_POINT "StringToBlob" MODULE_NAME "myudf.dll";


пример вызова в BeforeInsert-триггере :

new.blobfield = StringToBlob("СТРОКА", new.blobfield);





Страницы: 1 вся ветка

Текущий архив: 2002.06.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
14-89036
Black_Angel
2002-05-27 21:46
2002.06.27
Зенит-Милан


1-88858
ec
2002-06-14 17:20
2002.06.27
Динамически создоваемые компоненты и их удаление


14-89011
SPeller
2002-05-26 13:43
2002.06.27
Опять о WEB


1-88914
3asys
2002-06-14 00:11
2002.06.27
Алгоритм обхода дерева


14-89007
lipskiy
2002-05-22 22:36
2002.06.27
Вот уж такого я не ожидал :( {Снова про базу готового кода UBPFD}