Главная страница
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.011 c
1-88871
j_onion
2002-06-14 10:19
2002.06.27
Создание форм


3-88740
onix
2002-06-04 10:35
2002.06.27
Вопрос по MS SQL 6.5


1-88901
Fly`
2002-06-14 17:22
2002.06.27
нужна библиотека для дельфи с криптованием по MD5


1-88838
tall
2002-06-14 10:42
2002.06.27
Конвертация проекта


1-88865
anod
2002-06-17 17:02
2002.06.27
Как отобразить виртуальные папки