>  기사  >  데이터 베이스  >  SQL分页存储过程 支持连接查询等复杂的SQL

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

WBOY
WBOY원래의
2016-06-07 17:46:38817검색

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으로 문의하세요.