SQL Server 一个比较通用的分页存储过程

包括了: 分页 和 排序


USE [DataBaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create  procedure [dbo].[procedureName]
    
    @srcTableName Nvarchar(50),          --视图或表名
    
    @condition varchar(1000),            --查询条件
       
    @pageSize int = 10,                  --每页长度(1~n)
    @pageIndex int = 1,                  --页码(1~n)
                 
    @orderBy Nvarchar(50),               --排序方式,必须为查询结果中的字段名
    @isDesc Nvarchar(50) ,               --倒序还是正序
    
    @hascount int = 0                    --查询结果是否带总行数(0:不带;1:带)
    
AS
begin

 -- 参数容错
    if (@pageIndex <= 0)
    begin
        set @pageIndex = 1   
    end

    declare @select varchar(200)
		        
		if (@hascount = 0)
			begin
				set @select = ' select * ' ;
			end
			
		else if ( @hascount = 1 ) 
			begin 
				set @select = ' select *,(select count(row_number) from SearchResult as count) ';
			end
      
   
   declare @sql varchar(6000)

    set @sql=
    ' with SearchResult as
    (       
      select row_number() over (order by ' + @orderBy + ' ' + @isDesc + ') as row_number , 其它所需字段 
      from  ' + @srcTableName + ' ' + @condition +    
    ' ) '
    + @select + ' from SearchResult where row_number > ' + cast (@pageSize*(@pageIndex-1) as varchar(50)) + 
    ' and row_number <= ' + cast (@pageSize*(@pageIndex) as varchar(50)) + 
    ' order by ' + @orderBy + ' ' + @isDesc

    print @sql
    exec(@sql)

end

GO


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值