Wվ֪R
      / Search
     ƏVĎ / SEO
     ] / Tools
     Wվ̳ /Tutorial
  
  ҂ʲô
  WվOWOӋ (
  Wվ߄WվƏV (
  ŻڱҼƏV (ko
  ȸr (Goo
  Wվu\ (Goo
  ȫվӮOӋ (
 
   λڣ > ɹŰ͏נWjƼ޹˾ > Wվ֪R
   Wվ֪R
SqlServer2005ͨ÷퓴惦^
[ ԴW   lڣ2012-3-29 20:20:06 ]
ղص Del.icio.us Digg Live Bookmark Furl Facebook ٶѲ ViVi 365KeyWժ OWժ ӍWժ W POCOWժ ӵ QQ DigbuzzھW
ľWϿ˺ܶ퓵Ĵ惦^]аlFһбͨõҲSиߵֻԼ֪ذlNԼ˼V

ȰlһԼͨ÷퓴惦^ϣǰ݅ܵÂuָ˲ٸм

a
--@Columns          Ҫõ
--
@TableName        “ϲԃ
--
@Condition        ԃl
--
@OrderBy          Ҏt
--
@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
| ˾ |“ϵʽ |ʽ |˲Ƹ | g | WOӋ | Wվ֪R | Q | վָ
Copyright © 2011-2015 ɹŰ͏נWjƼ޹˾ All rights reserved
ַɹŰ͏נdˮ212   ]:015000   E- Mail:981268907@qq.com
ԃQQ981268907 “ϵԒ13354789303
欧美国产一区二区