1. USE [Renner]
    2. GO
    3. /****** Object: StoredProcedure [dbo].[Paging] Script Date: 2021/7/14 18:08:50 ******/
    4. SET ANSI_NULLS ON
    5. GO
    6. SET QUOTED_IDENTIFIER ON
    7. GO
    8. ALTER Proc [dbo].[Paging]--'1','5','洪飞','',''
    9. (
    10. @PageIndex int,
    11. @PageSize int,
    12. @userName varchar(50)='',
    13. @id varchar(50)='',
    14. @PageCount int=0 out
    15. )
    16. as
    17. begin
    18. --定义一个Nvarchar的恒成立的Sql语句
    19. declare @Sql Nvarchar(1000) = N'select * from Users where 1 = 1 '
    20. --判断查询框DName是否有值
    21. if(len(@userName)>0)
    22. --有值就把这句sql语句拼接到恒成立的sql语句里
    23. set @Sql += ' and userName like ''%'+@userName+'%'''
    24. --判断查询框BName是否有值
    25. if(len(@id)>0)
    26. --有值就把这句sql语句拼接到恒成立的sql语句里
    27. set @Sql += ' and id = '+@id+''
    28. --把拼接的字符串转成表明别名TT
    29. set @Sql = '('+@Sql+')TT'
    30. --总记录数
    31. declare @SqlCount Nvarchar(1000) = N'select @PageCount = count(*) from'+@Sql
    32. --系统存储过程拼接字符串
    33. exec sp_executesql @sqlCount,N'@PageCount int out',@PageCount out
    34. --分页
    35. declare @SqlPaging Nvarchar(1000) = 'select top('+convert(varchar(20),@PageSize)+') * from '+@Sql+'
    36. where id not in(select top('+convert(varchar(20),((@PageIndex - 1)*@PageSize))+') id from '+@Sql+')'
    37. --系统存储过程执行字符串
    38. exec sp_executesql @sqlpaging
    39. --select @PageCount PageCount,@PageSize PageSize
    40. select @PageIndex currPage,CEILING(@PageCount%@PageSize) totalPages,@PageCount Total
    41. end
    42. ----测试分页结果
    43. --declare @Count int
    44. --exec Paging 1,3,'','',@Count out
    45. --select @Count