簡體   English   中英

關於SQL Server存儲過程參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM