Главная страница
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.015 c
3-88695
IC
2002-06-01 13:00
2002.06.27
Стандартный TDBLookupComboBox


1-88866
Good Man
2002-06-17 21:29
2002.06.27
Как получить TextRange конкретного фрейма в TWebBrowser?


1-88802
abitur
2002-06-15 16:26
2002.06.27
Запись в файл(Глюки?)


1-88798
.: Joiro :.
2002-06-16 18:36
2002.06.27
Обращение к нескольким елементам сразу. Как?


1-88839
Tutov Roman
2002-06-17 10:37
2002.06.27
Как округлить Real