Текущий архив: 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.45 MB
Время: 0.005 c