多表分页存储过程

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE procedure main_table_sdiv
(
@pagesize int,
@pageindex int,
@docount bit,
@TableName varchar(20),
@Col varchar(500),
@sTableName varchar(20),
@whereStr varchar(100)

)


as

declare @SqlStr varchar(1000)


if(@docount=1)
begin
set @SqlStr = 'select count(id) from ' + @TableName
exec(@SqlStr)
end

else
begin
create table #indextable
(
[id] [int] IDENTITY (1, 1) NOT NULL ,
nid int
)
declare @PageLowerBound int
declare @PageUpperBound int

set @PageLowerBound = ( @pageindex - 1 ) * @pagesize
set @PageUpperBound = @PageLowerBound + @pagesize

set rowcount @PageUpperBound

set @SqlStr = 'insert into #indextable (nid) select id from ' +@TableName+ ' order by id desc '
--print @SqlStr
exec(@SqlStr)

set @SqlStr = 'select a.id'+ @Col +' from '+@TableName+' a,#indextable t '+@sTableName+' where a.id = t.nid '
set @SqlStr = @SqlStr + ' and t.id >'+cast(@PageLowerBound as varchar(20))+' and t.id <= '+cast(@PageUpperBound as varchar(20))+ ' ' + @whereStr + ' order by t.id '
--print @SqlStr
exec(@SqlStr)
end


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


--多表分页查询
--DECLARE @pagesize int
--DECLARE @pageindex int
--DECLARE @docount bit
--DECLARE @TableName varchar(20)
--DECLARE @Col varchar(500)
--DECLARE @sTableName varchar(20)
--DECLARE @whereStr varchar(100)

--set @pagesize = 25
--set @pageindex = 4
--set @docount = 0
--set @TableName = 'Firstunion' 主表
--set @Col = ',a.sp,a.userindexid,a.Reguserid,unionuser.id,unionuser.nickname'
--set @sTableName = ',unionuser' 从表
--set @whereStr = ' and a.userindexid = unionuser.id'
--EXEC [main_table_sdiv] @pagesize, @pageindex, @docount, @TableName, @Col, @sTableName, @whereStr


--set @pagesize = 25
--set @pageindex = 4
--set @docount = 0
--set @TableName = 'Firstunion'
--set @Col = ',a.sp,a.userindexid,a.Reguserid,u.id,u.nickname'
--set @sTableName = ',unionuser u'
--set @whereStr = ' and a.userindexid = u.id'
--EXEC [main_table_sdiv] @pagesize, @pageindex, @docount, @TableName, @Col, @sTableName, @whereStr


--单表分页查询
--set @pagesize = 25
--set @pageindex = 3
--set @docount = 0
--set @TableName = 'Firstunion'
--set @Col = ',a.sp,a.userindexid,a.Reguserid'
--set @sTableName = ''
--set @whereStr = ''
--EXEC [main_table_sdiv] @pagesize, @pageindex, @docount, @TableName, @Col, @sTableName, @whereStr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值