Страница 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%. так что ....