Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
10-1100100773
vlad_ri
2004-11-10 18:32
2005.08.21
проблема инсталяции COM+ серверного приложения в Win2003 Server


1-1122636148
А
2005-07-29 15:22
2005.08.21
Время выполнения процедуры, функции, отрезка кода и т.п.?


11-1105541859
Help
2005-01-12 17:57
2005.08.21
Есть аналог Form1.Activate?


4-1120138852
<Lelik>
2005-06-30 17:40
2005.08.21
Про CB_DIR


3-1120903774
Russko
2005-07-09 14:09
2005.08.21
Интересный запрос с группировкой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский