先上代码
Code
这个存储过程执行没有问题,但是逻辑有问题
用declare @dd int
exec UserInfos_SelectAllPaged 2,1,'userinfo','pkid','pkid > 1',@dd output
执行的话会发现第一页显示的两条记录,再显示第二页的时候(将1改成2),第一页的第二条记录又会出现在第二页的第一条上,这个逻辑问题要怎么改的?
set @sql = 'select top ' + cast(@pageCount as varchar) + ' * from ' + @tableName+
' where ' + @primaryName + ' not in (select top ' + cast(@pageCount*(@pageNow-1) as varchar) + ' ' + @primaryName + ' from '+ @tableName+')' +
' and ' + @strFilters
你的过滤条件有问题,修改成
set @sql = 'select top ' + cast(@pageCount as varchar) + ' * from ' + @tableName+
' where ' + @primaryName + ' not in (select top ' + cast(@pageCount*(@pageNow-1) as varchar) + ' ' + @primaryName + ' from '+ @tableName
+ 'WHERE' + @strFilters +')' + ' and ' + @strFilters
加一个主键参数排序试试。