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

Вниз

ADO + Ora = пропихнуть в хранимку blob более 32 кбайт   Найти похожие ветки 

 
QAZ   (2012-08-17 13:27) [40]


> AV ©   (17.08.12 13:20) [38]

кая разница что это снаружи один файл когда внутри тот же милион, да и виртуализация не прибавляет скорости


 
AV ©   (2012-08-17 13:41) [41]


> QAZ   (17.08.12 13:27) [40]

ну как, тебе дали место, видится нормально, ваяй что хочешь. Миллион файлов, так миллион. Значит, ССЗБ.
Администрация выделила тебе ресурс, как места, так времени процессора, памяти, др.
А чтобы ты ничего не свалил, что бы переезды там всякие были быстрые/успешные, или если тебя ломанули - все восстановимо простым f5 в тотале (это я утрирую сейчас)
А хочешь  быстро - покупай свой сервак, договоры заключай( или что там провайдеры еще делают)


 
QAZ   (2012-08-17 13:46) [42]


> или что там провайдеры еще делают

продают белый IP за стописят руб. месяц

> AV ©   (17.08.12 13:41) [41]

так не, тут народ говорит что дескать база данных из дохрена файлов это ужасное зло обреченное на скорую погибель
а интернет почемуто до сих пор жив, и всякие фейсбуки где база явно не из трех файлов состоит процветает


 
Es   (2012-08-17 13:46) [43]

Sergey Masloff, а ты то ничего не расскажешь про хранимки в контексте ADO + Oracle или вы окончательно съехали на шарп и про дельфю забыли? )


 
Sergey Masloff   (2012-08-17 14:14) [44]


> Es   (17.08.12 13:46) [43]

 ADO никогда не использовали. Про ODAC и DOA могу рассказать много чего если понадобится кому ;-)
 Ну еще про BDE вот там много чего было подводного но кого это сейчас волнует ;-)


 
Es   (2012-08-20 11:35) [45]

Ну что, господа.

Не может же быть такого, чтобы мы не разобрались как вызывать хранимку с BLOB"ом большого размера. Тем более Oracle точно не против. Он почему-то против ADO...


 
DVM ©   (2012-08-20 12:00) [46]


> Es   (20.08.12 11:35) [45]


> Тем более Oracle точно не против.

А в документации везде сказано что в хранимую процедуру Oracle нельзя передать BLOB больше 32к


 
Sergey Masloff   (2012-08-20 12:11) [47]


> А в документации везде сказано что в хранимую процедуру
> Oracle нельзя передать BLOB больше 32к

Да ну на ;-) Это микрософтовский провайдер может быть ограничивает - говорят он поверх OCI7 лежит


 
Sergey Masloff   (2012-08-20 12:18) [48]


> Не может же быть такого, чтобы мы не разобрались как вызывать
> хранимку с BLOB"ом большого размера. Тем более Oracle точно
> не против. Он почему-то против ADO...

Есть такое мнение что ты не задаешь значение SPPrmsLOB. Поэтому провайдер не биндит его как BLOB а то через чего он его биндит в PL/SQL не может иметь длинну более 32К

Мне не на чем попробовать


 
Sergey Masloff   (2012-08-20 12:21) [49]

стырено на просторах инета

with ADOCommand1 do try
   CommandObject.Set_ActiveConnection(ADOConnection1.ConnectionObject);
   Properties["SPPrmsLob"].Value := true;
   .....
   Parameters.ParamByName("bDATA").LoadFromStream(...,ftBlob);
   Execute;
 finally
   ADOCommand1.Properties["SPPrmsLob"].Value := false;
 end;


ОНО?


 
DVM ©   (2012-08-20 12:22) [50]


> Sergey Masloff   (20.08.12 12:11) [47]


>  Это микрософтовский провайдер может быть ограничивает

Я с Oracle практически не работал, может быть, но просто полез в гугл и нашел множество таких замечаний в разных мануалах, например в JDBC:

http://docs.oracle.com/cd/B19306_01/java.102/b14355/oralob.htm


Passing BLOB and CLOB Locators

Given a standard JDBC prepared statement or callable statement, you can use standard setter methods to pass LOB locators. These methods are defined as follows:

public void setBlob(int index, Blob value);
public void setClob(int index, Clob value);
Note:

If you pass a BLOB to a PL/SQL procedure, then the BLOB must be no bigger than 32K - 7. If you pass a BLOB that exceeds this limit, then you will receive a SQLException.


http://docs.oracle.com/cd/E11882_01/java.112/e16548/oralob.htm


 
DVM ©   (2012-08-20 12:23) [51]


> Sergey Masloff   (20.08.12 12:21) [49]

Тут важно, чтобы именно в хранимую процедуру передавалось


 
Es   (2012-08-20 12:47) [52]

DVM, нет. По крайней мере на 11g проверено. Мы генерировали BLOB-поток на стороне оры, порядка 16 мбайт (то что у нас в тесте с клиента через ADO не прошло по размеру). Отлично такой BLOB уходит как параметр в хранимку, а хранимка его потом записала в поле таблицы.

Так что ора не против.


 
DVM ©   (2012-08-20 13:33) [53]


> Es   (20.08.12 12:47) [52]


> По крайней мере на 11g проверено.

А у тебя какая версия Oracle? Там как раз написано, что в 11 нет ограничения, а в 10 вроде как есть.


 
Es   (2012-08-20 13:42) [54]

мне кажется ты ошибаешься... от сервера это не зависит. наверное, там речь идет про клиентскую сторону. Возможно, это зависит от клиентской версии.


 
Es   (2012-08-20 13:54) [55]

да, на десятом оракле всё точно также хорошо работает, блоб в 20 мегабайт в хранимку улетает хорошо.


 
Es   (2012-08-20 14:06) [56]


> ОНО?

ну я не очень понял причем здесь ADOCommand... Ведь Insert / Update и так работает хорошо с большими блобами в несколько мегабайт.

Затык идет с передачей именно в хранимки. С хранимкой работаю через TADOStoredProc, если там устанавливать свойство "SPPrmsLob", так у меня вообще вылетает AV...

http://www.onlinedisk.ru/get_image.php?id=930217


 
Sergey Masloff   (2012-08-20 14:14) [57]


> Затык идет с передачей именно в хранимки. С хранимкой работаю
> через TADOStoredProc, если там устанавливать свойство "SPPrmsLob",
>  так у меня вообще вылетает AV...

там типп cmdStoredProc и вызывается именно хранимка - в том месте откуда я код драл ;-)

Приведи свой пример кода где там AV?
вот это
CommandObject.Set_ActiveConnection
делал ДО установки свойства?


 
Sergey Masloff   (2012-08-20 14:15) [58]


> Тут важно, чтобы именно в хранимую процедуру передавалось

Это именно для хранимой процедуры.
У автора ж в query работает а в sp нет. Это значит что там биндится через какой-то тип который имеет разный допустимый размер в SQL и PL/SQL
То есть его "нелигитимное" преобразование становится таким только в случае с использованием системы типов PL/SQL

Если задать этот параметр то биндинг будет гарантировано проходить с использованием типа BLOB который одинаковый в SQL и PL/SQL энджайнах

Пока предположение такое дальше будем смотреть


 
Sergey Masloff   (2012-08-20 14:17) [59]

Про размеры - и в 8 (вроде бы) и в 9 и далее вставлял блобы через хранимые размерами гораздо больше жалких десятка мегабайт ;-)
 Так как не использовал ADO даже не знал что с ними проблемы могут быть
;-)


 
Es   (2012-08-20 14:20) [60]

А-а-а, Серёг, я неправильно понял твой выдранный код ))

Я ставил у ADOStoredProc.Properties, а оказывается еще есть ADOStoredProc.Parameters.Properties.

Всё заработало на ура, спасибо )



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.057 c
6-1260901006
talero
2009-12-15 21:16
2013.03.22
idhttp и ssl


2-1341842887
Den
2012-07-09 18:08
2013.03.22
remote desktop sreenshot?


15-1347692007
Roman_man
2012-09-15 10:53
2013.03.22
Как называется такой вид программы?


15-1330513399
Константинов
2012-02-29 15:03
2013.03.22
Разбит диск на разделы


15-1346412751
Dimka Maslov
2012-08-31 15:32
2013.03.22
Вот ведь штука!