我正在处理这个例子。如何运行查询以使用参数对列和asc/desc进行排序?
http://www.drury.net.nz/2005/04/15/specifying-a-sort-parameter-for-a-tsql-stored-procedure/
CREATE PROCEDURE getEmployees (@ColumnName varchar(100))
AS
SELECT
EmployeeID,
FirstName,
LastName,
SSN,
Salary
FROM
Employees
ORDER BY
CASE
WHEN @ColumnName=’LastName’ THEN LastName
WHEN @ColumnName=’Salary’ THEN CONVERT(varchar(50), Salary)
WHEN @ColumnName=’SSN’ THEN SSN
END
case语句的作品,但如果我有以下参数:@SortColumn,@SortDirection。
@SortColumn可以是任何类型的任何列,它似乎使用case语句,您必须将值转换为相同的类型。我想我可以让它们都成为VARCHAR,并且只要确保像DateTime这样的值按正确的顺序放置就可以按我的意愿排序。
但是如果我将@SortDirection参数设置为ASC或DESC作为VARCHAR值怎么办?如何调整查询以改变排序方向?
我已经考虑动态查询,但我正在尽我所能避免它们。我曾经看到我可以使用参数进行排序,但我不记得如何完成这项工作。 – Brennan 2009-04-27 23:45:38
你应该尽可能避免动态查询或游标。 – Sung 2009-04-28 02:47:16