通用分页存储过程,源码共享,大家共同完善

2020-07-10 08:06:42易采站长站整理

    @Where varchar(500),        查询条件(Code like ‘100’)
    @OrderBy varchar(100),        排序条件(支持多个排序字段,如:ID,Code desc,Name desc)
    @PageIndex int,                当前要显示的页的页索引,索引从1开始,无记录时为0。
    @PageSize int,                页大小
创建者:Hollis Yao
创建日期:2006-08-06
备注:
============================================================
*/
Create PROCEDURE [dbo].[Sp_Paging]
    @PK    varchar(50)=”,
    @Fields    varchar(500),
    @Tables varchar(1000),
    @Where varchar(500)=”,
    @OrderBy varchar(100),
    @PageIndex int,
    @PageSize int
AS
–替换单引号,避免构造SQL出错
set @Fields = replace(@Fields, ””, ”””)
–要执行的SQL,切分为几个字符串,避免出现长度超过4k时的问题
declare @SQL1 varchar(4000)
declare @SQL2 varchar(4000)
set @SQL1 = ”
set @SQL2 = ”
if @Where is not null and len(ltrim(rtrim(@Where))) > 0
    set @Where = ‘ where ‘ + @Where
else
    set @Where = ‘ where 1=1’
set @SQL1 = @SQL1 + ‘ declare @TotalCount int’    –声明一个变量,总记录数
set @SQL1 = @SQL1 + ‘ declare @PageCount int’    –声明一个变量,总页数
set @SQL1 = @SQL1 + ‘ declare @PageIndex int’    –声明一个变量,页索引
set @SQL1 = @SQL1 + ‘ declare @StartRow int’    –声明一个变量,当前页第一条记录的索引
set @SQL1 = @SQL1 + ‘ select @TotalCount=count(*) from ‘ + @Tables + @Where    –获取总记录数
set @SQL1 = @SQL1 + ‘ if @PageCount <= 0 begin’    –如果记录数为0,直接输出空的结果集
相关文章 大家在看