我正在處理這個例子。如何運行查詢以使用參數對列和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