【发布时间】:2009-04-27 23:41:20
【问题描述】:
我正在处理这个例子。
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 值呢?如何调整查询以更改排序方向?
【问题讨论】:
标签: sql sql-server tsql