SQL分页查询,临时表办法

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter procedure FiltrPager
(
@MotherBID varchar(20)='',
@BloodType varchar(4)='',
@FiltrStartDate Datetime=null,
@FiltrEndDate datetime=null,
@OperID varchar(20)='',
@TotalCount int outPut,
@pageCount int,
@pageIndex int
)
as
declare @minRowNum int
declare @maxRowNum int
begin
set @minRowNum=(@pageIndex-1)*@pageCount+1
set @maxRowNum=@pageIndex*@pageCount
create table #Temp
(
ID int primary key identity(1,1),
RecordID int
)
declare @sql nvarchar(1000)
set @sql=N'insert into #Temp select RecordID from Filtr_BaseInfo where 1=1'
IF (@MotherBID is not null) and (@MotherBID <> '')
BEGIN
set @sql=@sql+' and MotherBID like '+'''%'+@MotherBID+'%'''
END
IF (@BloodType is not null) and (@BloodType <> '')
BEGIN
set @sql=@sql+' and BloodType='+@BloodType
END
IF (@OperID is not null) and (@OperID <> '')
BEGIN
set @sql=@sql+' and OperID='+@OperID
END
if IsNull(@FiltrStartDate,'')<>'1900-01-01 00:00:00.000'
BEGIN
set @sql=@sql+' and FiltrDate>='+char(39)+Convert(varchar(20),@FiltrStartDate,120)+char(39)
END
IF IsNull(@FiltrEndDate,'')<>'1900-01-01 00:00:00.000'
BEGIN
set @sql=@sql+' and FiltrDate<='+char(39)+Convert(varchar(20),@FiltrEndDate,120)+char(39)
END
exec sp_executesql @sql
SET @TotalCount = ( SELECT  COUNT(ID)  FROM  #Temp)  
select a.* from Filtr_BaseInfo a,#Temp b where a.RecordID=b.RecordID and b.ID>=@minRowNum and b.ID<=@maxRowNum
drop table #Temp
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值