我的通用分页存储过程
来源:互联网 发布:手机屏幕挂字软件 编辑:程序博客网 时间:2024/06/04 20:03
我的通用分页
(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的原因。
- 我的通用分页存储过程
- 通用的分页存储过程
- 通用的分页存储过程
- 通用分页的存储过程
- 通用的分页存储过程
- 通用分页的存储过程
- 分页-【存储过程通用的】 【SqlServer分页】
- 通用分页存储过程
- 通用存储过程分页
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 通用分页存储过程
- 从今天开始写工作总结
- 从含有m个元素的集合中任选n个的算法
- 读《那些忧伤的年轻人》有感
- 会不会孤单~
- windows GUI 编程指南1
- 我的通用分页存储过程
- 比尔·盖茨:优秀员工的10大准则
- 试一试收藏功能
- 和蔼可亲
- 微软的MSXML解析器
- 2005-3-23
- VC编程技巧锦集-from vckbase.com
- RFC3261(SIP)读书笔记
- 众程序员-针对Delphi学习的讨论