网站知识
     搜索引擎 / Search
     推广文库 / SEO
     推荐工具 / Tools
     网站教程 /Tutorial
  
  我们做什么
  【手机网站助力中小企业抢
  网站建设·网页设计 (
  网站策划·网站推广 (
  雅虎口碑壹推广 (ko
  谷歌搜索竞价 (Goo
  网站评估诊断 (Goo
  全站动画·创意设计 (
 
   您的位置在:首页 > 太原市智奇网络科技有限公司 > 网站知识
   网站知识
SqlServer2005通用分页存储过程
[ 来源:太原市智奇网络科技有限公司   发布日期:2010-3-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
首页 | 公司简介 |联系方式 |付款方式 |人才招聘 | 域名空间 | 网页设计案例 | 网站知识 | 解决方案 | 建站指南
地址:太原市和平南路221号   邮编:030023   E- Mail:tzg@zhiqee.com   在线Q Q:点击发送消息给对方 点击发送消息给对方 点击发送消息给对方 
业务咨询:0351-6155718  13994248639  传真:0351-6155718   代理合作 :17673879
Copyright (c) 1999-2017 tywlgs.cn . All rights reserved
太原市智奇网络科技有限公司 太原市智奇网络科技有限公司
晋ICP备00006988号