-
Сейчас вставлял через ADO большую порцию данных. Порядка 100к записей. 1) процесс начинает много жрать памяти, на мой взгляд это не я отжираю. Дошло до потребления 250 MB. 2) на этом этапе (см. пункт 1) отвалилось, EOleException с ошибкой "Неопознанная ошибка": http://www.onlinedisk.ru/get_image.php?id=930182Боюсь, наш любимый ADO не выдержал. Транзакция проводилась без промежуточных коммитов, собственно так и планируется. Кто-нибудь с таким сталкивался, чего делать? Или я как-то не так что делаю?
-
> Или я как-то не так что делаю? ставлю на это.
-
Я как-то тоже доигрался с ADO до того, что получил ошибку: "Слишком сложный запрос!"
-
при том, что запрос выполняется сервером, а не ADO, очень "в тему".
вот длинна, там да, ограничена. но там вроде другое сообщение.
-
> вот длинна, там да, ограничена. но там вроде другое сообщение.
out of memory выелзало на файле ~200 МБ
-
> чего делать?
ну логично предположить, что делать надо несколько раз малыми порциями
-
Вставляет неизвестно куда, видимо в dbf
-
sniknik, ты прав.
Делалось в рабочем проекте, нашелся наш глюк. Всё ок, на самом деле память ADO по мере транзакции не отжирает, 100к влилось успешно. Ошибка возникала, судя по всему, из-за того, что ADO не выдержал сотню тысяч TAdoStoredProc
-
почитаешь - жалко ADO становится, столько всего
-
> сотню тысяч TAdoStoredProc при том, что и это не ADO, а заглушка "от борланда" в мозг привыкшим к BDE...
-
> память ADO по мере транзакции не отжирает, 100к влилось успешно. при серверной транзакции зависит только от серверного же ограничения на "транзакшин лог" (если для mssql).
-
> при том, что и это не ADO, а заглушка "от борланда" в мозг > привыкшим к BDE.
а что лучше использовать для вызова хранимки в оракле?
Я честно говоря даже не знаю другого способа вызвать хранимку через ADO, кроме использования TADOStoredProc
-
> Es (20.08.12 17:44) [11]
> Я честно говоря даже не знаю другого способа вызвать хранимку > через ADO, кроме использования TADOStoredProc
А TAdoCommand не подойдет?
EXECUTE PROCEDURE MY_PROC(:PARAM1, PARAM2, ... PARAMN)
-
> а что лучше использовать для вызова хранимки в оракле?
ODAC? Вообще хранимка вызывает через ODBC CALL.
-
> А TAdoCommand не подойдет?
> EXECUTE PROCEDURE MY_PROC(:PARAM1, PARAM2, ... PARAMN)
или можно тип запроса на "процедуру" в компоненте (TAdoCommand/TAdoDataSet) поменять и будет 1 в 1 "аля TADOStoredProc", но без "навесок".
-
+ но вообще, вот так явным EXECUTE PROCEDURE мне больше нравится, мне все явное больше нравиться, пусть иногда изза этого и больше писать приходится.
-
> А TAdoCommand не подойдет?
ну что значит не подойдет...
sniknik объявил, что TAdoStoredProc это мол костыли и грабли для любителей BDE. Может быть...
Собственно, если грамотно задать вопрос... В чем, собственно, костыли и грабли TAdoStoredProc? Чем его использование неэффективно, неграмотно или нечто в таком духе?
-
> ODAC?
имеется в виду в рамках ADO
-
> sniknik объявил, что TAdoStoredProc это мол костыли и грабли для любителей BDE. не ври, я такого не объявлял. а то, что борланд "под BDE/для BDE-истов" сделал парочку компонент, чтобы им бедняжкам не переучиваться, это факт (в справке 5й дельфи это английским по белому прописано, потом изъяли, видимо чтоб не смущать).
-
Es (20.08.12 18:24) [16]
>Собственно, если грамотно задать вопрос... В чем, собственно, костыли и >грабли TAdoStoredProc? Чем его использование неэффективно В том что это обертка над TADOCommand ЕДИНСТВЕННОЕ назначение которой - сохранение совместимости классов с BDE. И вобщем-то дело нужное (было) для миграции старых проектов. Но как всякая заплатка сделана видимо на скорую руку. Как уже говорил не работал с ADO вообще но например аналогичная нашлепка TIBStoredProc точно также дико глючила при нормальной работе остальных компонент. А зачем использовать TxxxStoredProc в новых проектах (не в миграции со старых) я не понимаю
-
> А зачем использовать TxxxStoredProc в новых проектах (не > в миграции со старых) я не понимаю
Очень просто: дословный перевод, говорит о работе с хранимками (таблицами, запросами)...
-
Dennis I. Komarov © (20.08.12 22:17) [20] И? продолжи мысль, так непонятно...
-
человек, видит "заточенный" компонент... и на кой ему что-то другое?
-
> и на кой ему что-то другое? правильно, нафига? несмотря на то, что 10лет прошло как технология "загнулась", логика нового основана на других принципах, и т.д., но "знает" компонент, и нового учить не желает...
в общем то, это и есть самый главный глюк "эмуляшек BDE", все остальное (а были и реальные, в смысле ексепты на последовательность действий ними/вразрез логике), лишь следствия.
-
> и нового учить не желает... хотя... блин, какое новое? ADO в свою очередь уже устарел, стараниями мелкософта, но ведь его так и учат на основе совсем уж окаменевшего гуано.
-
> ADO в свою очередь уже устарел
от-ж, блин! А что вместо?
-
А если что нибудь такое отправлять? insert into tabl1(f1,f2,f3) values (1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)
-
Студент (21.08.12 05:32) [26] В свое время такой вариант сильно помог, когда надо было быстро вставить 1 млн записей. База Firebird D7, думаю в Оракле тоже такое должно быть. Экспериментально выяснил что почему то 100 записей лучше всего влетает.
-
картман © (21.08.12 02:04) [25] QtSQL! :-)
-
> от-ж, блин! А что вместо? NET, естественно... (естественно с точки зрения мелкософта). + была еще инфа, что он "возродит" (еще и не умер) ODBC.
|