WhenI调用这个存储过程:SQL转换失败错误
ALTER PROCEDURE [dbo].[GetSorted]
(
@OrderByColumn nvarchar(256)
)
AS
SET NOCOUNT ON
SELECT itDocs.AddedDate, itDocs.AddedBy FROM itDocs
ORDER BY
CASE WHEN @OrderByColumn='AddedDate' THEN itDocs.AddedDate
WHEN @OrderByColumn='AddedBy' THEN itDocs.AddedBy
END ASC
我得到错误:
Conversion failed when converting date and/or time from character string
。
这是我怎么称呼SP:
DECLARE @return_value int
EXEC @return_value = [dbo].[GetSorted]
@OrderByColumn = 'AddedBy'
SELECT 'Return Value' = @return_value
GO
UPDATE: 如果我使用多情况下的做法,如拳头2个答案建议, 尝试添加另一种情况为方向,当我得到的错误:
ORDER BY
CASE WHEN @OrderDirection=0 THEN
CASE WHEN @OrderByColumn='AddedDate' THEN itDocs.AddedDate END ASC,
CASE WHEN @OrderByColumn='AddedBy' THEN itDocs.AddedBy END ASC
end
CASE WHEN @OrderDirection=1 THEN
关于您的更新,要将订单方向添加为一个存储过程的参数,您可以扩展CASE语句中的布尔表达式来检查列和方向。请看我更新的答案。 – Tim 2009-10-25 15:52:36