我的通用分页存储过程
2005-03-25 13:42
218 查看
我的通用分页
(by dragonimp)
考虑了好久,一直想不好用什么方案好。综合了各种方法写了自己的分页,准备在其他过程中调用。
CREATE PROCEDURE SelectPagedSQL
(
@SQL nvarchar(512),
@IndexField nvarchar(100),
@PageSize int=10,
@PageIndex int=1,
@Sort nvarchar(128)=@IndexField,
@TotalCount int=0 output
)
AS
declare @strSQL nvarchar(1024)
set @strSQL='SELECT * FROM
(SELECT TOP '+str(@PageSize)+' * FROM
(SELECT TOP '+str(@PageSize*@PageIndex)+' * FROM
('+@SQL+') AS t0
ORDER BY '+@IndexField+' ASC) AS t1
ORDER BY '+@IndexField+' DESC) AS t2
ORDER BY ' +@Sort
+'
set nocount on
select @TotalCount=count(*) from ('+@SQL+') as t0'
exec sp_executesql
@strSQL,
N'@TotalCount int=0 OUTPUT',
@TotalCount=@TotalCount OUTPUT
GO
经过测试,发现一个问题
在写这个的时候,一直拿不准要用id>max(id)还是直接top n,不知道哪种更快。
现在发现直接top是不行的,因为这样如果要的页面超出了表的范围,这样还是会得到记录的。也就是说这个是不可能出现没有记录的情况。所以,还是要改为max的方法。
别人有写了一个max的,但是他的输入参数不好,要指定tablename,我这个可以指定sql。速度上我这个慢了一点点,等我改用max看看是不是因为top的原因。
相关文章推荐
- 千万级通用的分页存储过程
- 通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录
- 通用高效分页存储过程代码
- Oracle通用分页存储过程和AspNetPage结合
- 通用高效分页存储过程代码
- mysql通用分页存储过程
- 存储过程大数据通用高效分页(不带条件和排序)
- java+oracle的存储过程开发案例(包含了oracle存储过程的通用分页方法、java的工厂类)
- 千万级通用的分页存储过程
- 通用的数据分页的存储过程 [转]
- 原创:SQL Server的通用分页存储过程,未使用游标,速度更快!
- 修正过的通用分页存储过程
- Oracle大数据量分页通用存储过程
- 通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录
- ASP.NET结合存储过程写的通用搜索分页程序
- [百万级]通用存储过程.分页存储过程
- [百万级]通用存储过程.分页存储过程
- 字符串缓存实现的通用分页存储过程
- 实现小数据量和海量数据的通用分页显示存储过程
- 通用分页显示查询存储过程(SQL Server)