我在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