Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.066 c
15-1342251556
MastaK
2012-07-14 11:39
2013.03.22
Баг или не баг?


15-1340092773
Jeer
2012-06-19 11:59
2013.03.22
Фото-альбом


15-1352458543
Chorus
2012-11-09 14:55
2013.03.22
Readln в C++


2-1332915245
Вася
2012-03-28 10:14
2013.03.22
По какому событию сохранять рекордсет в базу?


6-1257969182
Lamer6666
2009-11-11 22:53
2013.03.22
Как же выдрать нужный кусочем html кода.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский