Форум: "Базы";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Внизselect из строковой переменной. Найти похожие ветки
← →
Beer (2002-04-09 17:05) [0]Мастера!!
Interbase.
Как в хранимой процедуре собрать курсор, т.е. select динамический, условия собираются в процессе выполнения процедуры по определенным условиям допустим в строковую переменную, а потом нуно его исполнить и пробежать по записям, т.е. FOR SELECT ... DO
Как это можно сделать?
← →
Виктор Щербаков (2002-04-09 17:10) [1]Никак. Такая функциональность не реализована :(
← →
Beer (2002-04-09 17:14) [2]Ок, тогда каким образом это обойти? Собрал например в проге запрос.. И? Бежать стандартными .Next?
← →
Johnmen (2002-04-09 17:20) [3]...пихнул его в Query, например, потом Open и беги...
← →
Alexander Vasjuk (2002-04-09 17:26) [4]Можно в хр.процедуре выбрать все записи а по условию выдавать suspend
← →
Beer (2002-04-09 17:32) [5]2 Johnmen > Ну, т.е. стандартно.. Но процедуры на порядок быстрее... Хотя тут еще одна мысль посетила.. Если создавать view динамически и потом из хранимой на него ссылаться это быстрее будет?? =о)
2 Alexander Vasjuk> Так select Динамический и как сказано нет такой функциональность в ИБ...
← →
Виктор Щербаков (2002-04-09 17:32) [6]Запросы с параметрами можно использовать в SP, а вот динамически формировать текст SQL нельзя. И похоже разработчики IB не собираются такое реализовывать в ближайшем будущем.
Так что реализовать фишку наподобие передачи имен таблиц для выборки в SP не получится.
← →
Alexander Vasjuk (2002-04-09 17:38) [7]Beer © (09.04.02 17:32)
>select Динамический
Т.е. и набор таблиц, откуда идет выборка, меняется?
← →
Beer (2002-04-09 17:39) [8]Нда... ИБ достаточно клевый сервер, но вот это печально.. Ладно, выкрутимся...
Всем спасибо!!
← →
Beer (2002-04-09 17:42) [9]2 Alexander Vasjuk> Не набор даже, а условия выборки меняются.. Т.е. where..
← →
Alexander Vasjuk (2002-04-09 17:52) [10]Beer © (09.04.02 17:42)
Так если так, в процедуре выбирай ВСЁ в запросе for select ..., а suspend делай в теле if ... then ...
В if делаешь сложную проверку.
← →
Johnmen (2002-04-09 18:08) [11]>Beer ©
>...Но процедуры на порядок быстрее...
Можно поинтересоваться, откуда такая информация ?
← →
Beer (2002-04-09 18:14) [12]Где-то читал.. Или неправда?
← →
Beer (2002-04-09 18:18) [13]2 Alexander Vasjuk> Можно и так конечно...
← →
Johnmen (2002-04-09 18:24) [14]Неправда...
← →
Beer (2002-04-09 18:41) [15]2 Johnmen > Мои доводы: Сервер обычно устанавливается на более мощной машине, чем рабочая станция и это уже один из плюсов, особенно, если обслуживается небольшое количество клиентов. Оптимизированные алгоритмы выборки данных реализованные в сервере я думаю все таки эффективнее, чем простой прямой перебор на клиенте, тем более, если он забирает не все данные сразу, а партиями.. Я ошибаюсь?
← →
Johnmen (2002-04-09 18:48) [16]Я что-то не уловил...
>Оптимизированные алгоритмы выборки данных реализованные в
>сервере я думаю все таки эффективнее, чем простой прямой
>перебор на клиенте
Вообще-то все запросы выполняются серваком !
И непонятно, я что же перебирается на клиенте ?
← →
Beer (2002-04-09 18:53) [17]Именно тот случай, который в начале я назвал как прямой путь, т.е. выбираем в ДатаСеты и Next....
← →
Val (2002-04-09 19:03) [18]остается вопрос, нужно ли вам это на клиенте? зависит от конкретной задачи.
← →
Johnmen (2002-04-09 19:04) [19]Иду домой. Напоследок :
Время передачи результатов выполнения любого запроса, типа SELECT ...
на клиента всегда на несколько порядков больше времени всех остальных накладных расходов !
(исключая времея выполнения самого запроса - оно может быть очень большим !)
PS По поводу последней твоей реплики :
Пойми, что чистое время выполнения запроса не зависит от того,
кто инициировал его выполнение - клиент или сам сервак !
← →
Beer (2002-04-09 19:08) [20]Val > Изначально вообще вопрос ставился не о том к чему пришли
Johnmen > Именно поэтому я и говорю о разных затратах.. Ладно, остальное по мылу, если есть желание..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c