MSSQL2005 分頁存儲過程

 --調用方法:exec upPageDiv kucun,'id,ItemCode,ItemName','ItemCode asc','id>0',20,1,?,? 
Create Procedure [dbo].[upPageDiv] 
    @TableName varchar(200),            --表名 
    @Fields varchar(5000)='*',          --字段名(默認爲*) 
    @OrderField varchar(5000),          --排序字段(必須!支持多字段) 
    @sqlWhere varchar(5000)=Null,       --條件語句(不用加where) 
    @pageSize int,                      --指定每頁記錄條數 
    @pageIndex int=1,                   --指定當前頁碼 
    @totalPage int output,              --返回總頁數 
    @totalRecord int output             --返回總記錄數 
As 
Begin 
    Begin Tran  --開始事務 
    Declare @sql nvarchar(4000); 

    --計算總記錄數 
    If (@sqlWhere='' Or @sqlWhere=Null) 
        Set @sql='Select @totalRecord=Count(*) From '+@TableName 
    Else 
        Set @sql='Select @totalRecord=Count(*) From '+@TableName+' Where '+@sqlWhere 

    Exec sp_executesql @sql,N'@totalRecord int output',@totalRecord output 

    --計算總頁數 
    Select @TotalPage=Ceiling((@totalRecord+0.0)/@PageSize) 

    If (@sqlWhere='' Or @sqlWhere=Null) 
        Set @sql='Select * From (Select ROW_NUMBER() Over(Order By '+@OrderField+') As rowID,'+@Fields+' From '+@TableName 
    Else 
        Set @sql='Select * From (Select ROW_NUMBER() Over(Order By '+@OrderField+') As rowID,'+@Fields+' From '+@TableName+' Where '+@sqlWhere 

    --處理頁數超出範圍情況 
    If @PageIndex<=0 
        Set @pageIndex=1 

    If @pageIndex>@TotalPage 
        Set @pageIndex=@TotalPage 

     --處理開始點和結束點 
    Declare @StartRecord int 
    Declare @EndRecord int 
    
    Set @StartRecord=(@pageIndex-1)*@PageSize+1 
    Set @EndRecord=@StartRecord+@pageSize-1 

    --繼續合成sql語句 
    Set @sql=@sql+') As '+@TableName+' Where rowID Between '+Convert(varchar(50),@StartRecord)+' And '+Convert(varchar(50),@EndRecord) 

    Exec(@Sql) 

    If @@Error<>0 
        Begin 
            RollBack Tran 
            Return -1 
        End 
    Else 
        Begin 
            Commit Tran 
            Return @totalRecord --返回記錄總數 
        End 
End
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章