Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 > Именно поэтому я и говорю о разных затратах.. Ладно, остальное по мылу, если есть желание..




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.038 c
3-94315           MaXie                 2002-04-09 09:44  2002.04.29  
Совмещение несовместимого!


3-94296           Softmaster            2002-04-08 12:27  2002.04.29  
Восстановление базы Interbase


4-94617           Igor2312              2002-02-21 02:30  2002.04.29  
hooks


3-94320           Юляша                 2002-04-07 13:21  2002.04.29  
Secondary index


14-94560          Derr                  2002-03-21 10:23  2002.04.29  
Куда ушли авторы сайта ?