SQL Server: динамический ORDER BY, и если входным параметром является NULL, не ORDER BY? - PullRequest
1 голос
/ 22 ноября 2010

Я пытаюсь изменить хранимую процедуру, чтобы я включил параметр Input @OrderBy.

Но мне нужно проверить его, чтобы сказать, если его NULL, то не включать ORDER BY вSELECT SQL

Если его значение не равно NULL, я хочу заказать на @OrderBy

Возможно ли это?

Заранее спасибо

Ответы [ 2 ]

6 голосов
/ 22 ноября 2010

вы можете сделать это с помощью динамического SQL

Declare @dynamicSQL nvarchar(5000);
Declare @orderBy nvarchar(50);

Set @orderBy = 'column1';

Set @dynamicSQL = 'Select * from Table ';

If (@orderBy IS NOT NULL) BEGIN
  @dynamicSQL = @dynamicSQL + 'Order BY ' + @orderBy;
END

exec @dynamicSQL;
0 голосов
/ 22 ноября 2010

Единственный способ сделать это, как вы говорите, чисто использовать динамический SQL, но оператор CASE часто работает так же хорошо:

SELECT *
FROM foo f
ORDER BY CASE WHEN @OrderBy IS NULL THEN f.Whatever ELSE '' END
...