BLOB в ХП

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
AStranger
Сообщения: 3
Зарегистрирован: 07 фев 2005, 11:02

BLOB в ХП

Сообщение AStranger » 16 фев 2005, 17:35

Можно ли 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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 фев 2005, 19:58

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

AStranger
Сообщения: 3
Зарегистрирован: 07 фев 2005, 11:02

Сообщение AStranger » 16 фев 2005, 20:09

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 фев 2005, 22:05

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

AStranger
Сообщения: 3
Зарегистрирован: 07 фев 2005, 11:02

Сообщение AStranger » 17 фев 2005, 13:27

ХП примитивная.

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

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" - это баг сервера? Или особенность? Если баг то в какой версии пофиксили(собираются пофиксить?)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 фев 2005, 14:42

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

Ответить