﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-无忧商务 商务无忧</title><link>http://www.cnblogs.com/cn5135/</link><description>中国无忧商务网(http://www.cn5135.com)</description><language>zh-cn</language><lastBuildDate>Sat, 11 Oct 2008 06:20:48 GMT</lastBuildDate><pubDate>Sat, 11 Oct 2008 06:20:48 GMT</pubDate><ttl>60</ttl><item><title> [分享]千万数量级分页存储过程（效果演示） </title><link>http://www.cnblogs.com/cn5135/articles/356819.html</link><dc:creator>无忧商务</dc:creator><author>无忧商务</author><pubDate>Thu, 23 Mar 2006 06:44:00 GMT</pubDate><guid>http://www.cnblogs.com/cn5135/articles/356819.html</guid><wfw:comment>http://www.cnblogs.com/cn5135/comments/356819.html</wfw:comment><comments>http://www.cnblogs.com/cn5135/articles/356819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/cn5135/comments/commentRss/356819.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/cn5135/services/trackbacks/356819.html</trackback:ping><description><![CDATA[<p>[分享]千万数量级分页存储过程（效果演示）<br><br>效果演示：<a href="http://www.cn5135.com/_App/Enterprise/QueryResult.aspx">http://www.cn5135.com/_App/Enterprise/QueryResult.aspx</a></p>
<p>CREATE PROCEDURE CN5135_SP_Pagination<br>/*<br>***************************************************************<br>** 千万数量级分页存储过程 **<br>***************************************************************<br>参数说明:<br>1.Tables :表名称,视图<br>2.PrimaryKey :主关键字<br>3.Sort :排序语句，不带Order By 比如：NewsID Desc,OrderRows Asc<br>4.CurrentPage :当前页码<br>5.PageSize :分页尺寸<br>6.Filter :过滤语句，不带Where <br>7.Group :Group语句,不带Group By<br>效果演示：<a href="http://www.cn5135.com/_App/Enterprise/QueryResult.aspx">http://www.cn5135.com/_App/Enterprise/QueryResult.aspx</a><br>***************************************************************/<br>(<br>@Tables varchar(1000),<br>@PrimaryKey varchar(100),<br>@Sort varchar(200) = NULL,<br>@CurrentPage int = 1,<br>@PageSize int = 10,<br>@Fields varchar(1000) = '*',<br>@Filter varchar(1000) = NULL,<br>@Group varchar(1000) = NULL<br>)<br>AS<br>/*默认排序*/<br>IF @Sort IS NULL OR @Sort = ''<br>SET @Sort = @PrimaryKey<br>DECLARE @SortTable varchar(100)<br>DECLARE @SortName varchar(100)<br>DECLARE @strSortColumn varchar(200)<br>DECLARE @operator char(2)<br>DECLARE @type varchar(100)<br>DECLARE @prec int<br>/*设定排序语句.*/<br>IF CHARINDEX('DESC',@Sort)&gt;0<br>BEGIN<br>SET @strSortColumn = REPLACE(@Sort, 'DESC', '')<br>SET @operator = '&lt;='<br>END<br>ELSE<br>BEGIN<br>IF CHARINDEX('ASC', @Sort) = 0<br>SET @strSortColumn = REPLACE(@Sort, 'ASC', '')<br>SET @operator = '&gt;='<br>END<br>IF CHARINDEX('.', @strSortColumn) &gt; 0<br>BEGIN<br>SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))<br>SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))<br>END<br>ELSE<br>BEGIN<br>SET @SortTable = @Tables<br>SET @SortName = @strSortColumn<br>END<br>SELECT @type=t.name, @prec=c.prec<br>FROM sysobjects o <br>JOIN syscolumns c on o.id=c.id<br>JOIN systypes t on c.xusertype=t.xusertype<br>WHERE o.name = @SortTable AND c.name = @SortName<br>IF CHARINDEX('char', @type) &gt; 0<br>SET @type = @type + '(' + CAST(@prec AS varchar) + ')'<br>DECLARE @strPageSize varchar(50)<br>DECLARE @strStartRow varchar(50)<br>DECLARE @strFilter varchar(1000)<br>DECLARE @strSimpleFilter varchar(1000)<br>DECLARE @strGroup varchar(1000)<br>/*默认当前页*/<br>IF @CurrentPage &lt; 1<br>SET @CurrentPage = 1<br>/*设置分页参数.*/<br>SET @strPageSize = CAST(@PageSize AS varchar(50))<br>SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50))<br>/*筛选以及分组语句.*/<br>IF @Filter IS NOT NULL AND @Filter != ''<br>BEGIN<br>SET @strFilter = ' WHERE ' + @Filter + ' '<br>SET @strSimpleFilter = ' AND ' + @Filter + ' '<br>END<br>ELSE<br>BEGIN<br>SET @strSimpleFilter = ''<br>SET @strFilter = ''<br>END<br>IF @Group IS NOT NULL AND @Group != ''<br>SET @strGroup = ' GROUP BY ' + @Group + ' '<br>ELSE<br>SET @strGroup = ''<br>/*执行查询语句*/<br>EXEC(<br>'<br>DECLARE @SortColumn ' + @type + '<br>SET ROWCOUNT ' + @strStartRow + '<br>SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '<br>SET ROWCOUNT ' + @strPageSize + '<br>SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '<br>'<br>)<br>GO<br>-----------------------------------------------------</p>
<p>中国无忧商务网 <a href="http://www.cn5135.com/">http://www.cn5135.com</a></p>
 <img src ="http://www.cnblogs.com/cn5135/aggbug/356819.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42938/" target="_blank">[新闻]11个处于悬崖边缘的 Web 公司</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>