[转]SQL存储过程分页完美版--drop procedure p_page
[转]SQL存储过程分页完美版--
go
[转]SQL存储过程分页完美版

[转]SQL存储过程分页完美版
create procedure p_page
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版(
[转]SQL存储过程分页完美版
@Tables    varchar(1000), --表名如testtable
[转]SQL存储过程分页完美版
@PrimaryKey    varchar(100),--表的主键,必须唯一性
[转]SQL存储过程分页完美版
@Sort    varchar(200)    =    NULL,--排序字段如f_Name asc或f_name desc(注意只能有一个排序字段)
[转]SQL存储过程分页完美版
@CurrentPage    int    =    1,--当前页
[转]SQL存储过程分页完美版
@PageSize    int    =    10,---每页大小
[转]SQL存储过程分页完美版
@Fields    varchar(1000)    =    '*',--显示的字段列表
[转]SQL存储过程分页完美版
@Filter    varchar(1000)    =    NULL,--条件语句,不加where,如 f_id>3
[转]SQL存储过程分页完美版
@Group    varchar(1000)    =    NULL,--分组字段
[转]SQL存储过程分页完美版
@TotalPage int     output --返回总页数
[转]SQL存储过程分页完美版
)
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版
WITH ENCRYPTION ---加密存储
[转]SQL存储过程分页完美版

[转]SQL存储过程分页完美版
AS
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版     
SET NOCOUNT ON
[转]SQL存储过程分页完美版     
Declare @intResult Int    
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版     
Begin Tran
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版     
DECLARE @sql nvarchar(4000)
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
if @Filter is null or @Filter=''  
[转]SQL存储过程分页完美版         
set @Sql = 'select @intResult = count(' + @PrimaryKey + ') from ' +   @Tables
[转]SQL存储过程分页完美版         
else
[转]SQL存储过程分页完美版         
set @Sql = 'select @intResult = count(' + @PrimaryKey + ') from ' +   @Tables + ' where + ' + @Filter    
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版     
EXEC sp_executesql @sql,N'@intResult int OUTPUT',@intResult OUTPUT--计算总记录数
[转]SQL存储过程分页完美版
     select @TotalPage=CEILING((@intResult+0.0)/@PageSize)--计算总页数
[转]SQL存储过程分页完美版
    
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    @Sort    IS    NULL    or    @Sort    =    ''
[转]SQL存储过程分页完美版     
SET    @Sort    =    @PrimaryKey
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版     
DECLARE    @SortTable    varchar(100)
[转]SQL存储过程分页完美版     
DECLARE    @SortName    varchar(100)
[转]SQL存储过程分页完美版     
DECLARE    @strSortColumn    varchar(200)
[转]SQL存储过程分页完美版     
DECLARE    @operator    char(2)
[转]SQL存储过程分页完美版     
DECLARE    @type    varchar(100)
[转]SQL存储过程分页完美版     
DECLARE    @prec    int
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    CHARINDEX('DESC',@Sort)>0
[转]SQL存储过程分页完美版       
BEGIN
[转]SQL存储过程分页完美版         
SET    @strSortColumn    =    REPLACE(@Sort,    'DESC',    '')
[转]SQL存储过程分页完美版         
SET    @operator    =    '<='
[转]SQL存储过程分页完美版       
END
[转]SQL存储过程分页完美版     
ELSE
[转]SQL存储过程分页完美版          
IF    CHARINDEX('ASC',    @Sort)    >    0
[转]SQL存储过程分页完美版            
BEGIN  
[转]SQL存储过程分页完美版               
SET    @strSortColumn    =    REPLACE(@Sort,    'ASC',    '')
[转]SQL存储过程分页完美版               
SET    @operator    =    '>='
[转]SQL存储过程分页完美版            
END
[转]SQL存储过程分页完美版        
[转]SQL存储过程分页完美版         
ELSE    
[转]SQL存储过程分页完美版            
BEGIN
[转]SQL存储过程分页完美版             
SET    @strSortColumn   = @SORT
[转]SQL存储过程分页完美版             
SET    @operator    =    '>='
[转]SQL存储过程分页完美版            
END
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    CHARINDEX('.',    @strSortColumn)    >    0
[转]SQL存储过程分页完美版         
BEGIN
[转]SQL存储过程分页完美版           
SET    @SortTable    =    SUBSTRING(@strSortColumn,    0,    CHARINDEX('.',@strSortColumn))
[转]SQL存储过程分页完美版           
SET    @SortName    =    SUBSTRING(@strSortColumn,    CHARINDEX('.',@strSortColumn)    +    1,    LEN(@strSortColumn))
[转]SQL存储过程分页完美版         
END
[转]SQL存储过程分页完美版     
ELSE
[转]SQL存储过程分页完美版         
BEGIN
[转]SQL存储过程分页完美版           
SET    @SortTable    =    @Tables
[转]SQL存储过程分页完美版           
SET    @SortName    =    @strSortColumn
[转]SQL存储过程分页完美版         
END
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
Select    @type=t.name,    @prec=c.prec
[转]SQL存储过程分页完美版     
FROM    sysobjects    o   
[转]SQL存储过程分页完美版     
JOIN    syscolumns    c    on    o.id=c.id
[转]SQL存储过程分页完美版     
JOIN    systypes    t    on    c.xusertype=t.xusertype
[转]SQL存储过程分页完美版     
Where    o.name    =    @SortTable    AND    c.name    =    @SortName
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    CHARINDEX('char',    @type)    >    0
[转]SQL存储过程分页完美版           
SET    @type    =    @type    +    '('    +    CAST(@prec    AS    varchar)    +    ')'
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
DECLARE    @strPageSize    varchar(50)
[转]SQL存储过程分页完美版     
DECLARE    @strStartRow    varchar(50)
[转]SQL存储过程分页完美版     
DECLARE    @strFilter    varchar(1000)
[转]SQL存储过程分页完美版     
DECLARE    @strSimpleFilter    varchar(1000)
[转]SQL存储过程分页完美版     
DECLARE    @strGroup    varchar(1000)
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    @CurrentPage    <    1
[转]SQL存储过程分页完美版     
SET    @CurrentPage    =    1
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
SET    @strPageSize    =    CAST(@PageSize    AS    varchar(50))
[转]SQL存储过程分页完美版     
SET    @strStartRow    =    CAST(((@CurrentPage    -    1)*@PageSize    +    1)    AS    varchar(50))
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    @Filter    IS    NOT    NULL    AND    @Filter    !=    ''
[转]SQL存储过程分页完美版       
BEGIN
[转]SQL存储过程分页完美版         
SET    @strFilter    =    '    Where    '    +    @Filter    +    '    '
[转]SQL存储过程分页完美版         
SET    @strSimpleFilter    =    '    AND    '    +    @Filter    +    '    '
[转]SQL存储过程分页完美版       
END
[转]SQL存储过程分页完美版     
ELSE
[转]SQL存储过程分页完美版       
BEGIN
[转]SQL存储过程分页完美版         
SET    @strSimpleFilter    =    ''
[转]SQL存储过程分页完美版         
SET    @strFilter    =    ''
[转]SQL存储过程分页完美版       
END
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
IF    @Group    IS    NOT    NULL    AND    @Group    !=    ''
[转]SQL存储过程分页完美版       
SET    @strGroup    =    '    GROUP    BY    '    +    @Group    +    '    '
[转]SQL存储过程分页完美版     
ELSE
[转]SQL存储过程分页完美版       
SET    @strGroup    =    ''
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
set @sql = 'DECLARE    @SortColumn    '    +    @type    +    '
[转]SQL存储过程分页完美版     SET    ROWCOUNT    
'    +    @strStartRow    +    '
[转]SQL存储过程分页完美版     Select    @SortColumn=
'    +    @strSortColumn    +    '    FROM    '    +    @Tables    +    @strFilter    +    '    '    +    @strGroup    +    '    orDER    BY    '    +    @Sort    +    '
[转]SQL存储过程分页完美版     SET    ROWCOUNT    
'    +    @strPageSize    +    '
[转]SQL存储过程分页完美版     Select    
'    +    @Fields    +    '    FROM    '    +    @Tables    +    '    Where    '    +    @strSortColumn    +    @operator    +    '    @SortColumn    '    +    @strSimpleFilter    +    '    '    +    @strGroup    +    '    orDER    BY    '    +    @Sort    +    '
[转]SQL存储过程分页完美版     
'
[转]SQL存储过程分页完美版    
[转]SQL存储过程分页完美版     
exec(@sql)
[转]SQL存储过程分页完美版     
--print @sql
[转]SQL存储过程分页完美版

[转]SQL存储过程分页完美版
-------------------------------------------------------------------------------------------------
[转]SQL存储过程分页完美版

[转]SQL存储过程分页完美版     
If @@Error <> 0
[转]SQL存储过程分页完美版        
Begin
[转]SQL存储过程分页完美版            
RollBack Tran
[转]SQL存储过程分页完美版            
Return -1
[转]SQL存储过程分页完美版        
End
[转]SQL存储过程分页完美版     
Else
[转]SQL存储过程分页完美版        
Begin
[转]SQL存储过程分页完美版            
Commit Tran
[转]SQL存储过程分页完美版            
Return @intResult ---返回记录总数
[转]SQL存储过程分页完美版
        End
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版
GO
[转]SQL存储过程分页完美版
[转]SQL存储过程分页完美版

相关文章: