Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизХранимые процедуры. Найти похожие ветки
← →
Fin © (2005-01-23 20:02) [0]Существует такая проблема. На mssql написана хранимая процедура для выборки данных, дак вот в конце запроса после выражения order by имя поля может быть любым. Возможно ли в подготовленный запрос подставить это имя поля из входящего параметра.
На данный момент проблему решаю так, формирую строку запроса и запускаю через exec ("текст запроса"). Но почему то такой вариант не очень нравится. Есть предложения?
← →
Nikolay M. © (2005-01-24 10:13) [1]
> exec ("текст запроса")
И какой тогда смысл в такой ХП, работа которой сводится к выполнению динамического запроса?
http://delphimaster.net/view/3-1106549717/
Сговорились, что-ли? :)
← →
Alx2 © (2005-01-24 10:17) [2]>Nikolay M. © (24.01.05 10:13) [1]
>Сговорились, что-ли? :)
Ничего подобного :)
← →
Fin © (2005-01-24 13:27) [3]
> Nikolay M. © (24.01.05 10:13) [1]
Виноват, поста не заметил.
Но вопрос то не решен, предлагаемый метод: http://delphimaster.net/view/3-1106549717/
не подходит по той причине что он происходит на клиенте, а мне как раз и нужно на сервере и пока что кроме как exec ("текст запроса")не придумал. Искал в других местах предлогали только такой же способ. Вот попытал счастья здесь.
← →
Ega23 © (2005-01-24 14:03) [4]2 Nikolay M. © (24.01.05 10:13) [1]
И какой тогда смысл в такой ХП, работа которой сводится к выполнению динамического запроса?
Смысл есть. Если хочешь, могу по почте отправить "примерчик"...
← →
Ega23 © (2005-01-24 14:04) [5]2 Fin © (24.01.05 13:27) [3]
а мне как раз и нужно на сервере и пока что кроме как exec ("текст запроса")не придумал.
Боюсь, что более изящных методов-то и нет...
← →
Nikolay M. © (2005-01-24 14:16) [6]
> Но вопрос то не решен, предлагаемый метод: http://delphimaster.net/view/3-1106549717/
> не подходит по той причине что он происходит на клиенте
Там есть вариант с сортировкой на сервере. Что мешает динамически сформировать текст запроса из примеа на клиенте?
Задачу опиши, может понятнее будет?
> Смысл есть. Если хочешь, могу по почте отправить "примерчик"...
Процедуры, которая занимается только тем, что формирует текст динамик-скуля и выполняет его?
← →
Ega23 © (2005-01-24 14:20) [7]Процедуры, которая занимается только тем, что формирует текст динамик-скуля и выполняет его?
фактически да.
Имеется, так сказать, форма расширенного поиска по сотрудникам, в общей сложности - около 30 или 40 различных параметров. При этом "чекнуты" могут быть как все, так и ни одного. Причём, чем больше параметров - тем больше разных таблиц добавляется во from основного select"а.
← →
Ega23 © (2005-01-24 14:22) [8]Есть ещё достаточно дольшое количество ХП, которые на основании входных параметров генерят HTML-справку.
← →
Ольга (2005-01-24 16:07) [9]А такой вариант не подходит?
Выборку делать с помощью пользовательской функции, а ORDER BY делать на клиенте:
SELECT * FROM <имя функции>(<параметры)
ORDER BY <имя или номер поля>
← →
Ega23 © (2005-01-24 16:29) [10]2 Ольга (24.01.05 16:07) [9]
Order By - это часть Select"а. Можно, конечно, на клиенте dataSet.Sort делать.
Но я предпочитаю с сервера уже отсортированные данные получить, а на клиенте минимум работы выполнять.
← →
Nikolay M. © (2005-01-24 17:15) [11]
> Имеется, так сказать, форма расширенного поиска по сотрудникам,
Согласен, в этому случае лучше сделать централизованно, через ХП.
> Но я предпочитаю с сервера уже отсортированные данные получить,
> а на клиенте минимум работы выполнять.
А если юзеру хочется постоянно НД в дбгриде сортировать, будешь все время сервер лишней работой загружать?
← →
Fin © (2005-01-24 17:41) [12]
> Nikolay M. © (24.01.05 17:15) [11]
А если юзеру хочется постоянно НД в дбгриде сортировать, будешь все время сервер лишней работой загружать?
У нас примерно 40 машин в сети и больше половины из них P100, а сервер мощный, деньги на компы конечно не дадут, поэтому и приходится все периваливать на сервер.
← →
Fin © (2005-01-24 17:41) [13]Удалено модератором
Примечание: дубль
← →
Fin © (2005-01-24 17:45) [14]Прошу прощения за повтор не то нажал. :)
← →
aus (2005-01-24 18:35) [15]Такой вариант:
вместо хранимой процедуры использовать функцию, возвращающую table, а на клиенте формировать запросselect * from myfunction(:p1,:p2) order by field1
и сортировка на сервере происходит.
← →
Fin © (2005-01-24 20:34) [16]
> aus (24.01.05 18:35) [15]
select * from myfunction(:p1,:p2) order by field1
и сортировка на сервере происходит
И чем это отличается от ранее предложенного?
← →
aus (2005-01-24 20:41) [17]Fin © (24.01.05 20:34) [16]
Неужели таки нет различий?
← →
Fin © (2005-01-24 20:58) [18]
> aus (24.01.05 20:41) [17]
CREATE PROCEDURE Sortirovka @sortField varchar(50)
declare @SqlQuery varchar(500)
set @SqlQuery ="select * from table order by "+@sortField
exec(@SqlQuery )
go
и где по твоему принципиальные отличия, ну вернет функция table и что дальше?
← →
aus (2005-01-25 03:33) [19]Fin © (23.01.05 20:02)
Но почему то такой вариант не очень нравится. Есть предложения?
Я предложил. Если тебя твой способ устраивает, так в чем же дело?
Я понимаю, что наилучшим вариантом был бы такой:
create procedure Sortir @F varchar(50)
as
select * from Tbl order by @F
но такого не получится.
Чего ты еще ждешь?
← →
Fin © (2005-01-25 08:13) [20]
> aus (25.01.05 03:33) [19]
Вообщето я уже не чего не жду. Меня просто заинтересовал каким боком предложенный тобой вариант принципиально решает проблему. Я это к тому, что может быть я чего то не догоняю, и ты прав!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c