兰州网站建设公司-霈源网络!
网站建设、网站设计制作咨询电话:135-1931-9495  
观察行业视觉 用我们专业的角度 讲出你们的心声
NEWS CENTER ·
新闻中心
关注霈源网络
新闻中心当前位置:首页 > 新闻中心 >建站知识
兰州专业网站建设公司

SqlServer2005通用分页存储过程

发表日期:2010/3/29  文章编辑:兰州网站建设    浏览次数: 点击:1284

从网上看了很多分页的存储过程,没有发现一个所有表通用的!也许有更高的招,只是我自己不知道而已,特发此贴,以集思广益。

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

代码
--@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
相关新闻

声明:网站部分信息来源网络若有侵权或违禁请告知我们删除;网站建设制作,网站优化:版权所有:兰州霈源网络科技有限公司  业务咨询:13519319495  在线Q Q:点击发送消息给对方

360网站安全检测平台   陇ICP备15000675号-2  甘公网安备 62010302001228号

相关搜索:兰州网站建设、甘肃建设网站、网站建设明细报价表、企业网站建设,网站设计公司网站建设哪家公司好、网站建设学习网、兰州网站制作、兰州网站建设公司、兰州网站设计公司、兰州建设网、兰州网站制作培训、兰州专业网站制作、网站制作高端、网站制作、网站制作公司,网站制作收费标准,网站制作的基本步骤,网站制作公司,网站价格,网站制作多少钱,建个网站需要多少钱,如何制作自己的网站、网站建设流程、网站建设公司电话13519319495

兰州网站建设
在线咨询
兰州网站建设qq 在线咨询
在线咨询
兰州网站建设qq 在线咨询
兰州网站建设qq 在线咨询
兰州网站建设