我在SQL Server中有我的存儲過程中的問題2012存儲過程和壞的數據類型爲nvarchar到數字
首先表:
[ProductId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](500) NOT NULL,
[Category] [nvarchar](50) NOT NULL,
[Price] [decimal](16, 2) NOT NULL,
和存儲過程:
CREATE procedure [dbo].[GetProductsPaging]
(@PageOffset bigint=0,
@PageSize bigint=5,
@OrderBy varchar(30) = 'ProductId',
@DescOrder bit = 0)
AS
BEGIN
IF @DescOrder = 0
BEGIN
SELECT * FROM [dbo].Products
ORDER BY
CASE @OrderBy
WHEN 'ProductId' THEN ProductId
WHEN 'Name' THEN Name
WHEN 'Category' THEN Category
WHEN 'Price' THEN Price
ELSE NULL
END ASC
OFFSET @PageOffset ROWS
FETCH NEXT @PageSize ROWS ONLY
END
ELSE
BEGIN
SELECT * FROM [dbo].Products
ORDER BY
CASE @OrderBy
WHEN 'ProductId' THEN ProductId
WHEN 'Name' THEN Name
WHEN 'Category' THEN Category
WHEN 'Price' THEN Price
ELSE NULL
END DESC
OFFSET @PageOffset ROWS
FETCH NEXT @PageSize ROWS ONLY
END
END
當我這樣執行它時
EXEC dbo.GetProductsPaging 0, 0 ,'Price', 0
過程時使用此
EXEC dbo.GetProcedurePaging 0, 0, 'Name', 0
我得到這個錯誤
錯誤轉換數據類型爲nvarchar到數字工作得很好,但。
有人能幫助我嗎?感謝任何答案。
謝謝你現在的工作。 – Zabaa
我測試價格排序,它仍然排序正確,100後20 – Zabaa