Страница 1 из 1

BLOB в ХП

Добавлено: 16 фев 2005, 17:35
AStranger
Можно ли BLOB передавать как вх. параметр ХП ?
В FAQ написано - можно. В доке по IB7.1 - нельзя. Попробывал - не получается. Пробывал так:
Юзаю IBX в делфях.

Код: Выделить всё

sp:TStoredProc
s:TStream
....
sp.Params[0].LoadFromStream(s, ftBlob)
...
sp.Params[0].LoadFromStream(s, ftBlob);
spInsert.ExecProc; //вот здесь вылетает exception invalid BLOB ID
ХП примитивная insert into....
Если нельзя, то как обойти?
Заранее спасибо.
ЗЫ
сервер FB 1.5

Добавлено: 16 фев 2005, 19:58
kdv
причина, скорее, в процедуре. что-то ты не то в ней с blob делаешь. переданный в параметрах блоб надо ЗАПИСАТЬ на диск в insert или update.

Добавлено: 16 фев 2005, 20:09
AStranger
kdv писал(а):причина, скорее, в процедуре. что-то ты не то в ней с blob делаешь. переданный в параметрах блоб надо ЗАПИСАТЬ на диск в insert или update.
В ХП записываю в таблицу. Без всяких условий.

Добавлено: 16 фев 2005, 22:05
kdv
invalid BLOB ID выскакивает только при специфическом коде в процедуре. Если текст большой, приведи хоть схематически.
Клиентская часть с blob id не имеет вообще ничего общего, то есть это сугубо серверная ошибка.

Добавлено: 17 фев 2005, 13:27
AStranger
ХП примитивная.

Код: Выделить всё

CREATE PROCEDURE MESSAGES_I(
    DATA BLOB SUB_TYPE 0 SEGMENT SIZE 64,
    "Sender_ID" INTEGER,
    "Priority" INTEGER)
AS
BEGIN
  INSERT INTO MESSAGES (
    ID,
    Data,
    MessageStates_ID,
    Sender_ID,
    Received,
    Priority)
  VALUES (
    gen_ID(gen_main, 1), :DATA,  1, :Sender_ID, 'now', :Priority);
END
ЗЫ "invalid blob id" - это баг сервера? Или особенность? Если баг то в какой версии пофиксили(собираются пофиксить?)

Добавлено: 17 фев 2005, 14:42
kdv
1. нафигачил двойных кавычек... и удобно тебе?
2. по поводу segment size читай faq
3. никакого криминала ни в процедуре ни в приведенном коде не вижу. все должно работать 100%. так что ....