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

Вниз

Глюк в параметризированном запросе   Найти похожие ветки 

 
Глюкоман   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
14-1124574469
Knight
2005-08-21 01:47
2005.09.18
У вас когда-нить йогурт в руках взрывался?


4-1122366063
ZendCoder
2005-07-26 12:21
2005.09.18
Комерчиское распространение и поддержка языков


3-1123051769
worldmen
2005-08-03 10:49
2005.09.18
Создание базы в FireBird.


14-1124297005
NewWonder
2005-08-17 20:43
2005.09.18
Зацените систему управления CD-ROM ом


2-1123831677
webpauk
2005-08-12 11:27
2005.09.18
Автообновление