2012-05-08 30 views
0

我要分割的頁面,但下面的存儲過程是錯誤的,因爲使用@size,又是怎樣做到這一點的存儲過程關於SQL Server存儲過程的參數

得益於正確的方式!

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 

回答

1

括變量在括號中,如:

declare @i int 
set @i = 1 
select top (@i) * from sys.tables 
+0

是的,只需使用(@size),它可以工作~~! – user1137240

0

你就不能做到這一點:

SELECT * from 
...... 
WHERE RowNumber BETWEEN @size*(@page-1) AND @size*(@page) 
0

如果您使用的是SQL Server 2005或更高,您可以使用ROWNUMBER。對於較早版本的SQL Server,可以設置RowCount。