[英]About SQL Server stored procedure parameter
我想划分頁面,但是以下存儲過程是錯誤的,因為使用@size
以及完成此存儲過程的正確方法是什么
謝謝!!!
CREATE PROCEDURE message_devidepage
@size int,
@page int
AS
BEGIN
SELECT TOP @size * from --point out @size is wrong
(
SELECT ROW_NUMBER() OVER (ORDER BY createTime desc) AS RowNumber,* FROM message
) ed
WHERE RowNumber > @size*(@page-1);
END
GO
將變量括在括號中,例如:
declare @i int
set @i = 1
select top (@i) * from sys.tables
這是因為TOP
需要一個恆定值。 但是,可以使用SET ROWCOUNT
,請參見SET ROWCOUNT(Transact-SQL) 。
您不能只是這樣做嗎?
SELECT * from
......
WHERE RowNumber BETWEEN @size*(@page-1) AND @size*(@page)
如果您使用的是SQL Server 2005或更高版本,則可以使用RowNumber。 對於早期版本的SQL Server,可以設置RowCount。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.