我在 SQL Server 2012 中的存储过程有问题。
首先是表:
[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 转换为数值时出错。
有人可以帮我吗?感谢您的任何回答。