Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизBDE Oracle Blob Найти похожие ветки
← →
_Anton (2005-07-13 11:13) [0]По непонятной причене при использовании BDE TQuery при выгрузке и записи Blob объекта в файл - пишется только его часть размером-32k.
При чем размер не меняется даже при выставлении максимума BLOB size 1000 в алиасе БД
Неужели придется использовать TTable, или может кто уже с этим сталкивался?
код:
(Qu_All_Params.FieldByName("attribute") as TBlobField).SaveToFile(Foto_reference);
← →
Val © (2005-07-13 11:25) [1]Я сталкивался - влияет именно bde administrator - blob size для соотв. псевдонима. Работал через обыкновенный TQuery - без проблем.
Как пишете?
← →
_Anton (2005-07-13 11:48) [2]в параметре Blob Size выставляю 1000
через TQuery получаю рекордсет
и далее:
(Qu_All_Params.FieldByName("attribute") as TBlobField).SaveToFile("1.bmp");
или что конкретно интересует?
← →
Val © (2005-07-13 11:53) [3]а в базу из файла загружается - нормально?
← →
_Anton (2005-07-13 11:59) [4]загрузку в БД делал другой человек и через TTable (временную таблицу), почему не через Query - наверное тоже не работало;
Мысль интересная - посмотреть настройки Oracle - может размер там режется; Сейчас глянем
Если есть под рукой этот алиас (.cfg файл) - который рабочий -
не перешлешь глянуть?
← →
_Anton (2005-07-13 12:11) [5]в параметрах БД ничего, связанного с размером Blob не нашел
← →
Val © (2005-07-13 12:26) [6]какой тип данного поля в таблице на сервере?
какой тип поля на клиенте в квери(если статичекское)?
← →
evvcom © (2005-07-13 14:01) [7]Работаю через ODAC, тоже была подобная проблема. Уже точности не помню, писал через хранимку. Нашел инфу, что ограничения есть на передачу параметров BLOB в хранимку, причем, по-моему, не 32к, а 4к. Но у меня политика такая, что не давать юзеру прямого доступа к таблицам, поэтому ХП. Что выяснилось?
Во-первых, параметр типа BLOB должен быть in out.
Во-вторых, в insert или update обязательно вставляемое/изменяемое значение BLOB должно возвращаться опять же в этот параметр, т.е., например:
insert into MyTable (MyBLOBField) values (MyBLOBParam) returning MyBLOBField into MyBLOBParam;
В случае с TQuery попробуй такой же запрос. Удачи.
← →
Reindeer Moss Eater © (2005-07-13 14:10) [8]Ограничений на параметры не существует.
Но зато есть разница в типах данных в SQL и PL/SQL контекстах.
Например LONG ROW (но не только LONG RAW):
В таблице его длина не ограничена.
В PL/SQL максимальная длина 32760.
Поэтому и переменная и параметр процедуры этого типа не могут вместить больше данных чем 32760.
← →
_Anton (2005-07-13 14:54) [9]в БД тип BLOB;
вот в клиенте: я думал, что он автоматом определяется
после добавления запроса SQL.add (как и параметры)
возможно это не так?
делал так Qu_All_Params.Fields.Add(Qu_All_ParamsATTRIBUTE);
тогда как добавить это поле динамически?
пробовал так:
var
Qu_All_ParamsATTRIBUTE : TBlobField;
...
Qu_All_Params.SQL.Clear;
Qu_All_Params.Params.Clear;
Qu_All_Params.SQL.Add("select BIODATA.attribute from BIODATA, GR_HO_PASP where BIODATA.personid = GR_HO_PASP.id_gr_ho_pasp and BIODATA.attributetypeid=2 and GR_HO_PASP.NUM_QUESTIONNAIRE = :P_NUM_QUESTIONNAIRE");
Qu_All_Params.ParamByName("P_NUM_QUESTIONNAIRE").Value := BlankNumber;
Qu_All_ParamsATTRIBUTE.Create(nil);
Qu_All_Params.Fields.Add(Qu_All_ParamsATTRIBUTE);
Qu_All_Params.Prepared := False;
Qu_All_Params.Close;
Qu_All_Params.Open;
← →
_Anton (2005-07-13 14:55) [10]выдает ошибку - доступ по адресу закрыт
← →
evvcom © (2005-07-13 15:04) [11]А зачем вообще SQL генерить динамически? Геморроя больше, а толку мало, а то и вовсе никакого. Кроме того, постоянное Prepare увеличивает тормоза.
> выдает ошибку - доступ по адресу закрыт
Где выдает? На какой строке?
← →
Val © (2005-07-13 15:12) [12]Ответьте все-таки на вопрос - вы уверены что проблема при выгрузке данных из базы, откуда вы знаете, что в базе не хранится этих самых 32кб?
← →
_Anton (2005-07-13 15:45) [13]1. генерим динамически не просто так, статически query тоже не выгружает, попробовал(задал blob поле)
2. Отвечаю на вопрос - в БД хранится не 32k - хотя бы потому, что через Table выгружается 635k из этого поля;
← →
Val © (2005-07-13 16:09) [14]Повторяю - у меня работала и выгрузка и загрузка на обычном TQuery(в BDE blob size 1024 и т.д.).
Попробуйте чистый эксперимент - новый отдельный проект/новая форма - 1 квери поставленный в дизайне с запросом вида "select myblobfield from mytable where id = ..."...
← →
Reindeer Moss Eater © (2005-07-13 16:22) [15]Перед выгрузкой попробуй явно зафетчить блоб
← →
Val © (2005-07-13 16:29) [16]хм. действительно, это не размером ли с BLOBS TO CACHE ли он вываливает?
← →
_Anton (2005-07-13 17:30) [17]ну товарищи, не работает :((
blob cache не влияет
Остановился на решении с временной таблицей(через TTable);
правда это накладывает ряд ограничений(например во временной табл обязательно должен быть PK, иначе не пашет!!) ну и в таком духе.
Очень жалко, что заказчик из прошлого века - требует BDE;
через ADO говорят все в порядке.
Спасибо всем.
← →
Reindeer Moss Eater © (2005-07-13 20:27) [18]Может все же расскажешь про базовый тип блоба?
Потому что у БДЕ нет никаких проблем с поддерживаемыми им типами блоб.
>например во временной табл обязательно должен быть PK, иначе не пашет!!
Ты хочешь сказать, что у тебя была таблица без ПК и ты с помошью TQuery пытался тянуть нужную тебе запись на клиента?
← →
evvcom © (2005-07-14 08:09) [19]
> Может все же расскажешь про базовый тип блоба?
Был же ответ:
> _Anton (13.07.05 14:54) [9]
> в БД тип BLOB;
> Очень жалко, что заказчик из прошлого века - требует BDE;
> через ADO говорят все в порядке.
Попробуй DOA, он вроде халявный. Или я не прав? Если прав, то заказчику и знать необязательно, что сделано через DOA. Да и какая ему разница, если дополнительных настроек никаких (даже меньше, чем с BDE!) и денег платить не надо.
← →
Reindeer Moss Eater © (2005-07-14 08:27) [20]BDE, насколько я помню, вообще не поддерживает ни blob ни clob.
← →
Val © (2005-07-14 10:13) [21]> [20] Reindeer Moss Eater © (14.07.05 08:27)
работал нормально и с тем и с другим.
← →
Reindeer Moss Eater © (2005-07-14 12:49) [22]Верно. Я прогнал.
Заявление было справедливо только для DLL32=sqlora32.dll
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.055 c