Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизInvalid blob id Найти похожие ветки
← →
Sour (2004-06-05 09:57) [0]Firebird, IB6.5.
Возникает ошибка Invalid blob id при вызове хранимой процедуры (ExecProc) с параметрами типа blob.
← →
Johnmen © (2004-06-06 20:36) [1]Сочувствую.
← →
PEAKTOP (2004-06-07 03:57) [2]А работать с БЛОБами через IBTable + DB-controls низя ?
← →
Sour (2004-06-08 14:06) [3]На данном этапе имеется класс, который динамически создает IBStroedProc b выполняет их.
Так в чем может быть проблема? Из-за чего такая ошибка появляется?
>Johnmen Очень, очень аргументированный ответ.
← →
Johnmen © (2004-06-08 18:56) [4]>Sour Очень, очень информативный вопрос.
← →
Sour (2004-06-09 08:35) [5]При вызове хранимой процедуры (ExecProc) с параметрами типа blob
возникает ошибка "Invalid blob id". Что это за ошибка такая и как с ней бороться??
← →
Johnmen © (2004-06-09 09:04) [6]>Что это за ошибка
Ошибка определения/передачи параметра типа блоб
>как с ней бороться??
Исправлением.
← →
Mike Kouzmine © (2004-06-09 09:07) [7]Sour (09.06.04 08:35) [5] Johnmen © намекает, что неплохо бы поподробнее о своих действиях написать...
← →
Johnmen © (2004-06-09 09:11) [8]>Mike Kouzmine © (09.06.04 09:07) [7]
Да уже практически открытым текстом кричу...:)
← →
Sour (2004-06-09 12:31) [9]Я пытаюсь выполнить хранимую процедуру, передавая ей в качестве параметров значения типа blob.
Привожу код хранимой процедуры :
create PROCEDURE TBDOCS_I (
NEW_ID INTEGER,
"DATE" TIMESTAMP,
NUMBER VARCHAR(20) CHARACTER SET NONE,
ID_TEMPLATE INTEGER,
XML BLOB SUB_TYPE 1 SEGMENT SIZE 80,
WORD BLOB SUB_TYPE 0 SEGMENT SIZE 80,
BODY BLOB SUB_TYPE 0 SEGMENT SIZE 80,
ID_STATUS INTEGER,
ID_ROUTE INTEGER)
RETURNS (
ID INTEGER)
AS
begin
if (new_id <= 0) then
begin
id = gen_id(gen_tbdocs_id, 1);
insert into tbdocs (
id,
"DATE",
number,
id_template,
xml,
word,
body,
id_status,
id_route)
values (
:id,
:"DATE",
:number,
:id_template,
:xml,
:word,
:body,
:id_status,
:id_route);
end
else
begin
id = new_id;
update tbdocs
set "DATE" = :"DATE",
number = :number,
id_template = :id_template,
xml = :xml,
word = :word,
body = :body,
id_status = :id_status,
id_route = :id_route
where (id = :id);
end
end
Код ее вызывающий:
StoredProc := TIBStoredProc.Create(nil);
StoredProc.Database := DB;
StoredProc.StoredProcName := "TBDOCS_I";
StoredProc.Prepare;
with StoredProc do
begin
ParamByName("new_id").AsInteger := FiID;
ParamByName("DATE").AsDateTime := FsDate;
ParamByName("NUMBER").AsString := FsNumber;;
ParamByName("ID_TEMPLATE").AsInteger := FiTemplateID;
ParamByName("XML").AsString := FsXML;
ParamByName("WORD").AsString := FsWord;
ParamByName("BODY").AsString := FsBody;
ParamByName("ID_STATUS").AsInteger := FiStatusID;
ParamByName("ID_ROUTE").AsInteger := FiRouteID;
ExecProc; // Тут и возникает ошибка
FiID := ParamByName("new_id").AsInteger;
Free;
end;
Так вод при вызове ExcecProc вылетает вышеупомянутая ошибка. Подскажите причину ее появления и возможные методы устранения.
P.S.От динамического создания IBStoredProc отказаться не могу. Хотя вряд ли эта ошибка из-за динамического создания.
← →
Соловьев © (2004-06-09 13:11) [10]TBlobField.LoadFromStream+F1
← →
Sour (2004-06-09 20:54) [11]Сделал так:
with StoredProc do
begin
XMLStream := TMemoryStream.Create;
XMLStream.LoadFromFile(sTmp);
WordStream := TMemoryStream.Create;
BodyStream := TMemoryStream.Create;
ParamByName("new_id").AsInteger := FiID;
ParamByName("DATE").AsDateTime := FsDate;
ParamByName("NUMBER").AsString := FsNumber;;
ParamByName("ID_TEMPLATE").AsInteger := FiTemplateID;
ParamByName("XML").LoadFromStream(XMLStream, ftBlob);
ParamByName("WORD").LoadFromStream(WordStream, ftBlob);
ParamByName("BODY").LoadFromStream(BodyStream, ftBlob);
ParamByName("ID_STATUS").AsInteger := FiStatusID;
ParamByName("ID_ROUTE").AsInteger := FiRouteID;
ExecProc;
FiID := ParamByName("new_id").AsInteger;
XMLStream.Free;
WordStream.Free;
BodyStream.Free;
Free;
end;
Все равно ошибка "invalid blob id" при вызове ExecProc
← →
Sour (2004-06-10 09:53) [12]>Соловьев
TBlobField.LoadFromStream+F1 - непомогает
← →
Johnmen © (2004-06-10 11:45) [13]>Sour
Убери детализацию описания параметров процедуры типа блоба.
Но дело не в этом.
Я подозреваю, что это багофича IBX. Поэкспериментируй с др.библиотеками доступа. Напр. FIBPlus.
← →
Sour (2004-06-11 14:30) [14]Проблема решилась удивительным спосопом, создание базы из скрипта. Только данные заново перебивать пришлось...
Что это за багофича так и не выяснилось
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c