分页通用存储过程【单表】

本文介绍了一个SQL Server存储过程,用于实现灵活的分页查询功能。该存储过程支持自定义表名、字段选择、排序方式及条件筛选等,通过动态SQL实现高效的数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create proc aaa
(
 @TableName nvarchar(2000),  
 @PageSize int = 0,
 @PageIndex int = 0,
 @ReturnFields nvarchar(2000),
 @OrderByfield nvarchar(2000),
 @Where nvarchar(2000),
 @OrderType int = 0,
 @TotalCount int output
)
as
begin
   declare @Start int
   declare @End int
   declare @CountSql nvarchar(2000)
   declare @Sql nvarchar(2000)
   declare @OrderBy nvarchar(2000)
   
   if @OrderType = 1
    begin
       set @OrderBy = 'order by '+REPLACE(@OrderByfield ,',',' asc,')+ ' asc'
    end
    else
    begin
       set @OrderBy  = ' order by '+ REPLACE(@OrderByfield,',',' desc,')+' desc'
    end
    
    set @Where = ' where 1=1 ' + @Where 
    set @CountSql = ' select @TotalCount= count(*) from ' +@TableName +' '+ @Where 
    
    execute sp_executesql @CountSql ,N'@TotalCount int output',@TotalCount output
    
    if @PageIndex is null or @PageIndex =''
    set @PageIndex = 1;
    if @PageSize is null or @PageSize =''
    set @PageSize =10
    
    set @Start = (@PageIndex-1) * @PageSize
    set @End = @PageIndex  * @PageSize
    
    set @Sql = 'select row_number() over ('+@OrderBy +')as row_num  from '+ @TableName +''+@Where 
    set @Sql ='select * from ('+@Sql+') as temp '+ @Where +'temp.row_num >='
    + CONVERT(nvarchar(200),@Start)+' temp.row_num <='+ CONVERT(nvarchar(200),@End)
    execute sp_executesql  @sql
    select @TotalCount
end

 

在实际应用中,出现数据查询不到情况时,可添加语句

   this.anpDMBList.CurrentPageIndex = 1;

表明,将查询结果显示在第一页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值