Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

select из строковой переменной. [D5, IB5.x]


Beer ©   (2002-04-09 17:05:00) 

Мастера!!
Interbase.
Как в хранимой процедуре собрать курсор, т.е. select динамический, условия собираются в процессе выполнения процедуры по определенным условиям допустим в строковую переменную, а потом нуно его исполнить и пробежать по записям, т.е. FOR SELECT ... DO

Как это можно сделать?


Beer   (2002-04-09 19:08:00) [1]

Val > Изначально вообще вопрос ставился не о том к чему пришли
Johnmen > Именно поэтому я и говорю о разных затратах.. Ладно, остальное по мылу, если есть желание..


Johnmen   (2002-04-09 19:04:00) [2]

Иду домой. Напоследок :
Время передачи результатов выполнения любого запроса, типа SELECT ...
на клиента всегда на несколько порядков больше времени всех остальных накладных расходов !
(исключая времея выполнения самого запроса - оно может быть очень большим !)

PS По поводу последней твоей реплики :
Пойми, что чистое время выполнения запроса не зависит от того,
кто инициировал его выполнение - клиент или сам сервак !


Val   (2002-04-09 19:03:00) [3]

остается вопрос, нужно ли вам это на клиенте? зависит от конкретной задачи.


Beer   (2002-04-09 18:53:00) [4]

Именно тот случай, который в начале я назвал как прямой путь, т.е. выбираем в ДатаСеты и Next....


Johnmen   (2002-04-09 18:48:00) [5]

Я что-то не уловил...

>Оптимизированные алгоритмы выборки данных реализованные в
>сервере я думаю все таки эффективнее, чем простой прямой
>перебор на клиенте

Вообще-то всезапросы выполняются серваком !
И непонятно, я что же перебирается на клиенте ?


Beer   (2002-04-09 18:41:00) [6]

2 Johnmen > Мои доводы: Сервер обычно устанавливается на более мощной машине, чем рабочая станция и это уже один из плюсов, особенно, если обслуживается небольшое количество клиентов. Оптимизированные алгоритмы выборки данных реализованные в сервере я думаю все таки эффективнее, чем простой прямой перебор на клиенте, тем более, если он забирает не все данные сразу, а партиями.. Я ошибаюсь?


Johnmen   (2002-04-09 18:24:00) [7]

Неправда...


Beer   (2002-04-09 18:18:00) [8]

2 Alexander Vasjuk> Можно и так конечно...


Beer   (2002-04-09 18:14:00) [9]

Где-то читал.. Или неправда?


Johnmen   (2002-04-09 18:08:00) [10]

>Beer ©
>...Но процедуры на порядок быстрее...

Можно поинтересоваться, откуда такая информация ?


Alexander Vasjuk   (2002-04-09 17:52:00) [11]

Beer © (09.04.02 17:42)
Так если так, в процедуре выбирай ВСЁ в запросе for select ..., а suspend делай в теле if ... then ...
В if делаешь сложную проверку.


Beer   (2002-04-09 17:42:00) [12]

2 Alexander Vasjuk> Не набор даже, а условия выборки меняются.. Т.е. where..


Beer   (2002-04-09 17:39:00) [13]

Нда... ИБ достаточно клевый сервер, но вот это печально.. Ладно, выкрутимся...

Всем спасибо!!


Alexander Vasjuk   (2002-04-09 17:38:00) [14]

Beer © (09.04.02 17:32)
>select Динамический
Т.е. и набор таблиц, откуда идет выборка, меняется?


Виктор Щербаков   (2002-04-09 17:32:00) [15]

Запросы с параметрами можно использовать в SP, а вот динамически формировать текст SQL нельзя. И похоже разработчики IB не собираются такое реализовывать в ближайшем будущем.
Так что реализовать фишку наподобие передачи имен таблиц для выборки в SP не получится.


Beer   (2002-04-09 17:32:00) [16]

2 Johnmen > Ну, т.е. стандартно.. Но процедуры на порядок быстрее... Хотя тут еще одна мысль посетила.. Если создавать view динамически и потом из хранимой на него ссылаться это быстрее будет?? =о)
2 Alexander Vasjuk> Так select Динамический и как сказано нет такой функциональность в ИБ...


Alexander Vasjuk   (2002-04-09 17:26:00) [17]

Можно в хр.процедуре выбрать все записи а по условию выдавать suspend


Johnmen   (2002-04-09 17:20:00) [18]

...пихнул его в Query, например, потом Open и беги...


Beer   (2002-04-09 17:14:00) [19]

Ок, тогда каким образом это обойти? Собрал например в проге запрос.. И? Бежать стандартными .Next?


Виктор Щербаков   (2002-04-09 17:10:00) [20]

Никак. Такая функциональность не реализована :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо