MS SQL 2000 Сортировка выборки
От: Gasy Россия  
Дата: 23.01.04 10:06
Оценка:
Нужно написать хранимую процедуру, которая делает выборку из таблицы и упорядочевает её (ORDER BY), но нужно, чтобы столбец по которому сортировать и направление сортировки передавались в процедуру как параметры.


CREATE PROCEDURE dbo.some_ls
    @i_SORT_BY VARCHAR,
    @i_SORT_DIRECTION VARCHAR
Re: MS SQL 2000 Сортировка выборки
От: _MarlboroMan_ Россия  
Дата: 23.01.04 11:11
Оценка: 3 (1)
Здравствуйте, Gasy, Вы писали:

G>
G>CREATE PROCEDURE dbo.some_ls
G>    @i_SORT_BY VARCHAR,
G>    @i_SORT_DIRECTION VARCHAR
G>


dinamic SQL спасет тебя.

читаем про
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )

и
sp_executesql [@stmt =] stmt
[ 
    {, [@params =] N'@parameter_name  data_type [,...n]' } 
    {, [@param1 =] 'value1' [,...n] }
]
... << RSDN@Home 1.1.2 stable >>

— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Re: MS SQL 2000 Сортировка выборки
От: Alexey_ch Швейцария  
Дата: 23.01.04 11:18
Оценка: 3 (1)
Здравствуйте, Gasy, Вы писали:

G>Нужно написать хранимую процедуру, которая делает выборку из таблицы и упорядочевает её (ORDER BY), но нужно, чтобы столбец по которому сортировать и направление сортировки передавались в процедуру как параметры.



CREATE PROCEDURE dbo.some_ls
    @i_SORT_BY VARCHAR,
    @i_SORT_DIRECTION VARCHAR
AS
BEGIN
    declare @some_var varchar(20)
    set @some_var = ', 2'

    declare @dyn_sql nvarchar(255)
    set @dyn_sql = N'select 1 ' + convert(nvarchar, @some_var)

    exec sp_executesql  @stmt =  @dyn_sql
END
GO
Re: MS SQL 2000 Сортировка выборки
От: mlog  
Дата: 23.01.04 11:29
Оценка: 3 (1)
Здравствуйте, Gasy, Вы писали:

G>Нужно написать хранимую процедуру, которая делает выборку из таблицы и упорядочевает её (ORDER BY), но нужно, чтобы столбец по которому сортировать и направление сортировки передавались в процедуру как параметры.


G>
G>CREATE PROCEDURE dbo.some_ls
G>    @i_SORT_BY VARCHAR,
G>    @i_SORT_DIRECTION VARCHAR
G>


create procedure dbo.ordered_select
   @sort_condition varchar(1024)
as
begin
   decalre ordered_select varchar(1024);
   set ordered_select = 'select ... order by ';

   ...

   execute (@ordered_select + @sort_condition);
end;
Re: MS SQL 2000 Сортировка выборки
От: xtony  
Дата: 23.01.04 12:22
Оценка: 3 (1)
Есть вариант передавать в процедуру номер столбца, по которому требуется делать сортировку.
А в возвращаемом наборе подставлять ее в ордер.
Например

create procedure sp_x (@ord int)
as
...

select Name, Amount, StartDate, ...
...
order by @ord

return


или если поля разного типа, то:

order by
case when @ord = 1 then Name end,
case when @ord = 2 then Amount end,
case when @ord = 3 then StartDate end

Поэкспериментируй — там много вариантов сортировки можно применить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.