使用存储过程获取分页数据的Sql代码

CREATE PROCEDURE [dbo].[PR_ListPage]     
@tblName      varchar(255),       -- 表名         
@OrderName      varchar(255),       -- 排序字段名     
@Fields       varchar(1000) = ' * ',      -- 返回的字段的集合      
@PageSize     int = 20,           -- 页尺寸         
@PageIndex    int = 1,            -- 页码         
@IsCount      bit = 0,            -- 返回记录总数, 非 0 值则返回         
@StrOrders     varchar(300) = '', -- 设置排序规则     
@strWhere     varchar(1000) = ''  -- 查询条件 (注意: 不要加 where) 
AS    
declare @strSQL   varchar(1000)     -- 主语句     
declare @strTmp   varchar(300)      -- 临时变量     
declare @StrOrder   varchar(300)      -- 临时变量  
   
if @StrOrders != ''        
begin            
set @StrOrder=' order by ' + @StrOrders         
end         
set @strTmp = 'not in (select top ' + str(@PageSize-1)     
set @strSQL = 'select top ' + str(@PageSize)  + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' ' + @strOrder + ')' + @strOrder           


if @strWhere != ''        
begin            
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' where (' + @strWhere + ') ' + @strOrder + ') and (' + @strWhere + ') ' + @strOrder         
end    

if @PageIndex = 1         
begin              
set @strTmp = ''            
if @strWhere != ''                
set @strTmp = ' where (' + @strWhere + ')'            
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+ ' from ' + @tblName + ' ' + @strTmp + ' ' + @strOrder         
end    
if @iscount !=0         
begin            
set @strTmp = ''            
if @strWhere != ''            
set @strTmp = ' where (' + @strWhere + ')'            
set @strSQL = 'select count(*) as Total from ' + @tblName + ' '+ @strTmp         
end      


exec (@strSQL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值