|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
ALTER PROCEDURE Pagination ( @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = \\\'*\\\', -- 需要返回的列 @fldName varchar(255)=\\\'\\\', -- 排序的字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @doCount bit = 0, -- 返回记录总数, 非 0 值则返回 @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1500) = \\\'\\\' -- 查询条件 (注重: 不要加 where) ) AS /* 定义变量 */ declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 if @doCount != 0 begin if @strWhere !=\\\'\\\' set @strSQL = \\\'select count(*) as Total from [\\\' + @tblName + \\\'] where \\\'+@strWhere else set @strSQL = \\\'select count(*) as Total from [\\\' + @tblName + \\\']\\\' end --以上代码的意思是假如@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况 else begin if @OrderType != 0 --假如@OrderType不是0,就执行降序,这句很重要! begin set @strTmp = \\\'<(select min\\\' set @strOrder = \\\' order by [\\\' + @fldName +\\\'] desc\\\' end else begin set @strTmp = \\\'>(select max\\\' set @strOrder = \\\' order by [\\\' + @fldName +\\\'] asc\\\' end if @PageIndex = 1 begin if @strWhere != \\\'\\\' set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\' + @tblName + \\\'] where \\\' + @strWhere + \\\' \\\' + @strOrder else set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\'+ @tblName + \\\'] \\\'+ @strOrder --假如是第一页就执行以上代码,这样会加快执行速度 end else begin --以下代码赋予了@strSQL以真正执行的SQL代码 set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\'+ @tblName + \\\'] where [\\\' + @fldName + \\\']\\\' + @strTmp + \\\'([\\\'+ @fldName + \\\']) from (select top \\\' + str((@PageIndex-1)*@PageSize) + \\\' [\\\'+ @fldName + \\\'] from [\\\' + @tblName + \\\']\\\' + @strOrder + \\\') as tblTmp)\\\'+ @strOrder if @strWhere != \\\'\\\' set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\' + @tblName + \\\'] where [\\\' + @fldName + \\\']\\\' + @strTmp + \\\'([\\\' + @fldName + \\\']) from (select top \\\' + str((@PageIndex-1)*@PageSize) + \\\' [\\\' + @fldName + \\\'] from [\\\' + @tblName + \\\'] where \\\' + @strWhere + \\\' \\\' + @strOrder + \\\') as tblTmp) and \\\' + @strWhere + \\\' \\\' + @strOrder end end exec (@strSQL) 返回类别: 教程 上一教程: 准确处理ASP动态网页中的容错机制 下一教程: 创建一个WEB投票系统 您可以阅读与"通用分页的存储过程函数"相关的教程: · 一个高效的数据分页的存储过程 · 实现分页的例子-使用存储过程来实现分页 · 一个简朴的存储过程数据分页 · 存储过程分页 · ASP用存储过程实现数据分页 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |