Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BDE Oracle Blob


Страницы:   1 2

_Anton ©   (2005-07-13 11:13:00) 

По непонятной причене при использовании BDE TQuery при выгрузке и записи Blob объекта в файл - пишется только его часть размером-32k.
При чем размер не меняется даже при выставлении максимума BLOB size 1000 в алиасе БД
Неужели придется использовать TTable, или может кто уже с этим сталкивался?

код:
(Qu_All_Params.FieldByName('attribute') as TBlobField).SaveToFile(Foto_reference);


Reindeer Moss Eater   (2005-07-14 12:49:00) [1]

Верно. Я прогнал.
Заявление было справедливо только для DLL32=sqlora32.dll


Val   (2005-07-14 10:13:00) [2]

> [20] Reindeer Moss Eater ©   (14.07.05 08:27)
работал нормально и с тем и с другим.


Reindeer Moss Eater   (2005-07-14 08:27:00) [3]

BDE, насколько я помню, вообще не поддерживает ни blob ни clob.


evvcom   (2005-07-14 08:09:00) [4]


> Может все же расскажешь про базовый тип блоба?

Был же ответ:

> _Anton   (13.07.05 14:54) [9]
> в БД  тип BLOB;


> Очень жалко, что заказчик из прошлого века - требует BDE;
> через ADO говорят все в порядке.

Попробуй DOA, он вроде халявный. Или я не прав? Если прав, то заказчику и знать необязательно, что сделано через DOA. Да и какая ему разница, если дополнительных настроек никаких (даже меньше, чем с BDE!) и денег платить не надо.


Reindeer Moss Eater   (2005-07-13 20:27:00) [5]

Может все же расскажешь про базовый тип блоба?
Потому что у БДЕ нет никаких проблем с поддерживаемыми им типами блоб.

> например во временной табл обязательно должен быть PK, иначе не пашет!!

Ты хочешь сказать, что у тебя была таблица без ПК и ты с помошью TQuery пытался тянуть нужную тебе запись на клиента?


_Anton   (2005-07-13 17:30:00) [6]

ну товарищи, не работает :((

blob cache не влияет

Остановился на решении с временной таблицей(через TTable);
правда это накладывает ряд ограничений(например во временной табл обязательно должен быть PK, иначе не пашет!!) ну и в таком духе.

Очень жалко, что заказчик из прошлого века - требует BDE;
через ADO говорят все в порядке.

Спасибо всем.


Val   (2005-07-13 16:29:00) [7]

хм. действительно, это не размером ли с BLOBS TO CACHE ли он вываливает?


Reindeer Moss Eater   (2005-07-13 16:22:00) [8]

Перед выгрузкой попробуй явно зафетчить блоб


Val   (2005-07-13 16:09:00) [9]

Повторяю - у меня работала и выгрузка и загрузка на обычном TQuery(в BDE blob size 1024 и т.д.).
Попробуйте чистый эксперимент - новый отдельный проект/новая форма - 1 квери поставленный в дизайне с запросом вида 'select myblobfield from mytable where id = ...'...


_Anton   (2005-07-13 15:45:00) [10]

1. генерим динамически не просто так, статически query тоже не выгружает, попробовал(задал blob поле)
2. Отвечаю на вопрос - в БД хранится не 32k - хотя бы потому, что через Table выгружается 635k из этого поля;


Val   (2005-07-13 15:12:00) [11]

Ответьте все-таки на вопрос - вы уверены что проблема при выгрузке данных из базы, откуда вы знаете, что в базе не хранится этих самых 32кб?


evvcom   (2005-07-13 15:04:00) [12]

А зачем вообще SQL генерить динамически? Геморроя больше, а толку мало, а то и вовсе никакого. Кроме того, постоянное Prepare увеличивает тормоза.

> выдает ошибку - доступ по адресу закрыт

Где выдает? На какой строке?


_Anton   (2005-07-13 14:55:00) [13]

выдает ошибку - доступ по адресу закрыт


_Anton   (2005-07-13 14:54:00) [14]

в БД  тип 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;


Reindeer Moss Eater   (2005-07-13 14:10:00) [15]

Ограничений на параметры не существует.
Но зато есть разница в типах данных в SQL и PL/SQL контекстах.

Например LONG ROW (но не только LONG RAW):
В таблице его длина не ограничена.
В PL/SQL максимальная длина 32760.
Поэтому и переменная и параметр процедуры этого типа не могут вместить больше данных чем 32760.


evvcom   (2005-07-13 14:01:00) [16]

Работаю через ODAC, тоже была подобная проблема. Уже точности не помню, писал через хранимку. Нашел инфу, что ограничения есть на передачу параметров BLOB в хранимку, причем, по-моему, не 32к, а 4к. Но у меня политика такая, что не давать юзеру прямого доступа к таблицам, поэтому ХП. Что выяснилось?
Во-первых, параметр типа BLOB должен быть in out.
Во-вторых, в insert или update обязательно вставляемое/изменяемое значение BLOB должно возвращаться опять же в этот параметр, т.е., например:
insert into MyTable (MyBLOBField) values (MyBLOBParam) returning MyBLOBField into MyBLOBParam;

В случае с TQuery попробуй такой же запрос. Удачи.


Val   (2005-07-13 12:26:00) [17]

какой тип данного поля в таблице на сервере?
какой тип поля на клиенте в квери(если статичекское)?


_Anton   (2005-07-13 12:11:00) [18]

в параметрах БД ничего, связанного с размером Blob не нашел


_Anton   (2005-07-13 11:59:00) [19]

загрузку в БД делал другой человек и через TTable (временную таблицу), почему не через Query - наверное тоже не работало;
Мысль интересная - посмотреть настройки Oracle - может размер там режется; Сейчас глянем
Если есть под рукой этот алиас (.cfg файл) - который рабочий -
не перешлешь глянуть?


Val   (2005-07-13 11:53:00) [20]

а в базу из файла загружается - нормально?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо