Я думал, что вы можете изменить параметр на int и отсортировать по столбцу с таким порядковым номером:
CREATE PROCEDURE [dbo].[CLICK10_GetCP]
@ordinal AS INT
AS
BEGIN
SELECT
acct_nbr,
acct_name
FROM
acct
ORDER BY @Ordinal
END
GO
Это вызывает приятную ошибку (SQL2005):
Сообщение 1008, Уровень 16, Состояние 1, Строка 4
Элемент SELECT, идентифицируемый
ORDER BY номер 1 содержит переменную
как часть выражения, идентифицирующего
позиция столбца. Переменные только
разрешено при заказе по выражению
ссылка на имя столбца.
Найти в поиске это решение здесь (SQL 2005 и выше):
CREATE PROCEDURE [dbo].[CLICK10_GetCP]
@switch AS BIT
AS
BEGIN
SELECT
acct_nbr,
acct_name
FROM
acct
ORDER BY CASE
WHEN @switch = 0 THEN (RANK() OVER (ORDER BY acct_nbr, acct_name))
WHEN @switch = 1 THEN (RANK() OVER (ORDER BY acct_name, acct_nbr))
END
GO