Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.042 c
6-1115785055
Lex_!
2005-05-11 08:17
2005.08.21
по поводу получения Http контента


14-1122670237
Кручен-Верчен
2005-07-30 00:50
2005.08.21
Литературное открытие...


4-1120426642
alex-drob
2005-07-04 01:37
2005.08.21
Блокировка клавиши Windows


1-1122953638
sCORpio80
2005-08-02 07:33
2005.08.21
MDIForm и цвет TPanel


3-1121084038
Андрей Жук
2005-07-11 16:13
2005.08.21
Иерархический запрос в Oracle