Главная страница
    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.45 MB
Время: 0.005 c
14-88993
roman_tutov@mail.ru
2002-05-24 17:40
2002.06.27
BDE это бесплатный продукт ?


1-88886
Nebula
2002-06-14 13:58
2002.06.27
Delphi & COM


1-88783
Dark Elf
2002-06-13 20:27
2002.06.27
Stack overflow


3-88709
Sokoloff
2002-06-03 13:21
2002.06.27
SQL запрос


3-88733
insmod
2002-06-03 18:08
2002.06.27
Поиск в БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский