![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк в параметризированном запросе [D7, Paradox]
Глюкоман © (2005-08-01 00:08:00)В программе выполняется кусок кода:
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"
Соловьев (2005-08-03 10:08:00) [1]
> p.s. prepere и execsql всетаки лишние.
execsql лишний
Глюкоман (2005-08-03 00:27:00) [2]>Anatoly Podgoretsky
Скорей всего что-то в BDE и возможно требуется использовать другие функции BDE для сброса кэша (close & free не помогают) как это сделать я не знаю.
erika (2005-08-02 08:58:00) [3]Попробуй проще
query1.close;
query1.params[0].asinteger:=x;
query1.open();
работает без отказно
Anatoly Podgoretsky (2005-08-02 00:12:00) [4]Возсожно, это close или free
Глюкоман (2005-08-02 00:05:00) [5]А возможно ли физически удалять результаты предыдущего запроса перед выполнением нового запроса?
Desdechado (2005-08-01 12:55:00) [6]Prepare выполняется неявно для неподготовленных запросов.
А если готовить явно, то Prepare надо вызывать 1 раз в самом начале, а не при каждом запросе, у которого меняется только параметр.
sniknik (2005-08-01 02:00:00) [7]> другие варианты подскажите пожалуйста.
> "Some internal limit"
было обсуждение там такая ошибка выдавалась, только при заполнении таблицы а не запросе... когда размер ее превышал лимит.
но допустим, ошибка выдается. именно как описано... почему может быть? если например, оригинальная таблица сделана с максимальным "блоксайз"-ом, и значит может иметь до 2гб размера (или около того). а после выставлен другой параметр минимальный, и размер соответственно может быть только 128мб...
когда выполняется запрос он формирует временную таблицу. с какими параметрами? скорее всего с текущими. так? а запрос, возможно, возвращает больше... ибо может! оригинальная таблица в несколько раз больше. вот ограничение на размер и наступило, у временной таблици "internal limit" размера.
или показан (как обычно ;) не оригинальный запрос, а в оригинальном есть обьеденение... тогда исходным таблицам даже не нужно быть "особенными"/большими, обьеденение может быть очень большим.
ну вот. один из варитов. проверь, выставь максимальный BLOCK SIZE у парадокса.
(хотя Some это не обязательно размер ;о)), может чтото другое кончилось)
p.s. prepere и execsql всетаки лишние.
Глюкоман (2005-08-01 00:59:00) [8]Ну если есть другие варианты подскажите пожалуйста.
Глюкоман (2005-08-01 00:48:00) [9]Да я и сам офигел от єтой ошибки.
Запрос выполняется с разными значениями параметра, определенными пользователем, поэтому и приходится делать prepere. Насчет execsql - по другому не возвращаются верные результаты.
DrPass (2005-08-01 00:39:00) [10]Это парадокс. Но зачем делать много раз query1.prepare? И зачем вообще делать query1.execsql, если это запрос на выборку?