Home  >  Article  >  Database  >  SQL分页存储过程 支持连接查询等复杂的SQL

SQL分页存储过程 支持连接查询等复杂的SQL

WBOY
WBOYOriginal
2016-06-07 17:46:38796browse

CREATE PROCEDURE Pagination
(
 @SQL nvarchar(1024),   
 @PageSize int = 20,    --分页大小
 @PageIndex int = 0,    --分页索引
 @Sort nvarchar(100) = '''',    --排序字段
 @TotalCount int = 0 output --总数   
)
AS

set nocount on
/*声明查询字符串*/
declare @strSQL nvarchar(4000)

set @strSQL = '' select @TotalCount=count(*) from () as t ''

/*取得查询结果总数*/
exec sp_executesql
@strSQL,
int=0 OUTPUT'',
@TotalCount=@TotalCount OUTPUT

declare @ItemCount int
declare @_PageIndex int

set @_PageIndex = @PageIndex + 1;
/*确定搜索边界*/
set @ItemCount = @TotalCount - @PageSize * @_PageIndex

if(@ItemCount     set @ItemCount = @ItemCount + @PageSize
else
    set @ItemCount = @PageSize

if(@ItemCount

if(@Sort != '''')
begin
    /*声明排序变量*/
    declare @IndexSort1 nvarchar(50), @IndexSort2 nvarchar(50), @Sort1 nvarchar(50), @Sort2 nvarchar(50)
   
    SET @Sort1 = @Sort
    SET @Sort2 = Replace(Replace(Replace(@Sort, ''DESC'', ), ''ASC'', ''DESC''), , ''ASC'')
 
    print @Sort1
    print @Sort2

    set @strSQL = ''SELECT * FROM
    (SELECT TOP '' + STR(@ItemCount) + '' * FROM
    (SELECT TOP '' + STR(@PageSize * @_PageIndex) + '' * FROM
    () AS t0
    ORDER BY +'') AS t1
    ORDER BY +'') AS t2
    ORDER BY ''
end
else
begin
    set @strSQL = ''SELECT * FROM
    (SELECT TOP '' + STR(@ItemCount)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn