Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизГлюк в параметризированном запросе Найти похожие ветки
← →
Глюкоман (2005-08-01 00:08) [0]В программе выполняется кусок кода:
query1.close;
query1.prepere;
query1.params[0].asinteger:=x;
query1.execsql;
query1.active:=true;
текст запроса:
select name from main.db where idst=:set1
запрос выполняется правильно, но после нескольких выполнений кода выдается ошибка "Some internal limit"
← →
DrPass © (2005-08-01 00:39) [1]Это парадокс. Но зачем делать много раз query1.prepare? И зачем вообще делать query1.execsql, если это запрос на выборку?
← →
Глюкоман (2005-08-01 00:48) [2]Да я и сам офигел от єтой ошибки.
Запрос выполняется с разными значениями параметра, определенными пользователем, поэтому и приходится делать prepere. Насчет execsql - по другому не возвращаются верные результаты.
← →
Глюкоман (2005-08-01 00:59) [3]Ну если есть другие варианты подскажите пожалуйста.
← →
sniknik © (2005-08-01 02:00) [4]> другие варианты подскажите пожалуйста.
> "Some internal limit"
было обсуждение там такая ошибка выдавалась, только при заполнении таблицы а не запросе... когда размер ее превышал лимит.
но допустим, ошибка выдается. именно как описано... почему может быть? если например, оригинальная таблица сделана с максимальным "блоксайз"-ом, и значит может иметь до 2гб размера (или около того). а после выставлен другой параметр минимальный, и размер соответственно может быть только 128мб...
когда выполняется запрос он формирует временную таблицу. с какими параметрами? скорее всего с текущими. так? а запрос, возможно, возвращает больше... ибо может! оригинальная таблица в несколько раз больше. вот ограничение на размер и наступило, у временной таблици "internal limit" размера.
или показан (как обычно ;) не оригинальный запрос, а в оригинальном есть обьеденение... тогда исходным таблицам даже не нужно быть "особенными"/большими, обьеденение может быть очень большим.
ну вот. один из варитов. проверь, выставь максимальный BLOCK SIZE у парадокса.
(хотя Some это не обязательно размер ;о)), может чтото другое кончилось)
p.s. prepere и execsql всетаки лишние.
← →
Desdechado © (2005-08-01 12:55) [5]Prepare выполняется неявно для неподготовленных запросов.
А если готовить явно, то Prepare надо вызывать 1 раз в самом начале, а не при каждом запросе, у которого меняется только параметр.
← →
Глюкоман (2005-08-02 00:05) [6]А возможно ли физически удалять результаты предыдущего запроса перед выполнением нового запроса?
← →
Anatoly Podgoretsky © (2005-08-02 00:12) [7]Возсожно, это close или free
← →
erika © (2005-08-02 08:58) [8]Попробуй проще
query1.close;
query1.params[0].asinteger:=x;
query1.open();
работает без отказно
← →
Глюкоман (2005-08-03 00:27) [9]>Anatoly Podgoretsky
Скорей всего что-то в BDE и возможно требуется использовать другие функции BDE для сброса кэша (close & free не помогают) как это сделать я не знаю.
← →
Соловьев © (2005-08-03 10:08) [10]
> p.s. prepere и execsql всетаки лишние.
execsql лишний
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c