郑州网站建设、网站开发、网站设计、网站制作、网站推广、河南SEO、百度优化、SEM搜索引擎营销,做网站就选一度空间网络工作室(www.yidukongjian.cn) 郑州网站建设电话,郑州网络公司电话,郑州网站建设哪家好,郑州网站建设多少钱,郑州网站开发哪家好,郑州网站开发多少钱,郑州网络公司哪家好
  网站知识
     搜索引擎 / Search
     推广文库 / SEO
     推荐工具 / Tools
     网站教程/ Tutorial
  
  我们能什么
  医药行业网站设计解决方案
  IT行业网站开发解决方案
  电子器械企业网站开发解决
  房地产行业网站设计解决方
  SNS互动交友网站制作解
  B2B行业门户网站建设解
  企业网站改版解决方案
 
   您的位置在:一度空间网络工作室 > 网站知识
   网站知识
SqlServer2005通用分页存储过程
[ 来源:一度空间网络工作室   发布日期:2010-03-29 20:20:06 ]
收藏到: Del.icio.us Google书签 Digg Live Bookmark Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
从网上看了很多分页的存储过程,没有发现一个所有表通用的!也许有更高的招,只是我自己不知道而已,特发此贴,以集思广益。

  我先发一个我自己写的通用分页存储过程,希望前辈、哥哥姐姐、弟弟妹妹们批评指正,本人不胜感激。郑州网站设计多少钱

代码
--@Columns          要得到的列
--
@TableName        表名(可做联合查询)
--
@Condition        查询条件
--
@OrderBy          排序规则
--
@PageNum          第几页
--
@PageSize         每页有多少务记录
--
@PageCount        输出总页数
--
@RecordCount      输出总记录数
Create Procedure proc_CurrencyPage
(
    
@Columns        varchar(max),
    
@TableName      varchar(max),
    
@Condition      varchar(max),
    
@OrderBy        varchar(max),
    
@PageNum        int,
    
@PageSize       int,
    
@PageCount      int output,
    
@RecordCount    bigint output
)
AS
    
DECLARE @Sql nvarchar(max);
    
Set @Sql = 'Select @CountOut = Count(*) From ' + @TableName + ' Where ' + @Condition;
    
EXEC sp_executesql @Sql,N'@CountOut INT OUTPUT',@CountOut = @RecordCount OUTPUT;

    
Set @PageCount = @RecordCount / @PageSize;
    
IF(@RecordCount % @PageSize > 0Set @PageCount = @PageCount + 1;
    
IF(@PageNum < 1Set @PageNum = 1;
    
IF(@PageNum > @PageCountSet @PageNum = @PageCount;
    
Declare @BRowNum int,@ERowNum int;
    
Set @BRowNum = (@PageNum - 1* @PageSize;
    
Set @ERowNum = @BRowNum + @PageSize;
    
Set @Sql = 
       
'Select * From (
            Select 
'+@Columns+', ROW_NUMBER() Over(Order By ' + @OrderBy + ') As RowNum 
            From 
' + @TableName + ' 
            Where 
' + @Condition + '
        ) as TempT 
        Where RowNum > 
' + Convert(varchar(10),@BRowNum+ ' 
              And 
              RowNum <= 
' + Convert(varchar(10),@ERowNum+ ' 
              Order By 
' + @OrderBy;
    
Exec(@Sql);
GO

--测试:
Declare @Columns     varchar(max)
Declare @TableName   varchar(max)
Declare @Condition   varchar(max)
Declare @OrderBy     varchar(max)
Declare @PageNum     int
Declare @PageSize    int
Declare @PageCount   int
Declare @RecordCount bigint

set @Columns = 'ID,ReportID,ReportCondition'
set @TableName = '[PSYT_TS_ReportSort]'
set @Condition = 'ReportSort = ''Z'''
set @ORDERBY = 'ID'
set @PageNum = 2
set @PageSize=20

Exec proc_CurrencyPage @Columns,@TableName,@Condition,@ORDERBY,@PageNum,@PageSize,@PageCount output,@RecordCount output
 

郑州网站设计、SEO优化专家一度空间网络工作室,多年河南网站建设经验,提供网站开发、网站优化、SEM营销、危机公关、微博营销,做网站请联系18790266635。服务范围:网站制作(模版网站、速成网站、个人建网站、企业做网站、营销型网站、中高端网站),网站推广(百度排名、百度快照、、事件营销、赛富通、53客服、一比多、400电话)。想了解做网站多少钱?请与我们联系
首页 | 关于我们 |联系方式 |付款方式 |人才招聘 | 域名空间 | 网站案例 | 网站知识 | 解决方案 | 建站指南 |
一度空间网络工作室专业郑州网站建设、网站优化,八年河南网站制作经验,品质保证。提供网站开发、SEO搜索引擎优化、SEM搜索引擎营销、微博营销、危机公关,建网站请致电18790266635。主要服务:网站设计(个人做网站、企业建网站、模版网站、速成网站、中高端网站、营销型网站),网站推广(百度快照、百度排名、赛富通、事件营销、53客服、400电话、一比多)