CREATE proc [dbo].[product_PageByRowNumber]
(
@tableName nvarchar,
@pageIndex int,
@pageSize int,
@indexColumn nvarchar,
@column nvarchar(100),
@condition nvarchar(100)
)
AS
SELECT top @pageSize *
FROM (
SELECT top (@pageSize*@pageIndex) @column,ROW_NUMBER() OVER (ORDER BY @indexColumn DESC) AS RowNumber
FROM @tableName where @condition) as T 
WHERE T.RowNumber>(@pageIndex-1)*@pageSize这种写法不对吗。
错误:必须声明标量变量 "@pageSize"。

解决方案 »

  1.   

    CREATE proc [dbo].[product_PageByRowNumber]
    @tableName nvarchar,
    @pageIndex int,
    @pageSize int,
    @indexColumn nvarchar,
    @column nvarchar(100),
    @condition nvarchar(100)AS
    Declare @sql nvarchar(max)set @sql='SELECT top '+ @pageSize +'* from ( SELECT top(' +@pageSize*@pageIndex+')'+@column+',ROW_NUMBER() OVER (ORDER BY'+@indexColumn+'DESC) AS RowNumber'
    set @sql=@sql+'FROM'+@tableName+'where'+@condition+') as T WHERE T.RowNumber>('+@pageIndex+'-1)*@pageSize'exec sp_executesql @sql