首頁  >  文章  >  資料庫  >  SQL分页存储过程 支持连接查询等复杂的SQL

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

WBOY
WBOY原創
2016-06-07 17:46:38796瀏覽

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)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn