分页存储过程(增加了选择字段列表、排序方式参数)

/*
数据库分页存储过程,支持倒序和升序
参数说明:
  @tablename:为搜索表名
  @tablefield:为表的字段,约定为表的主键,
  @where:为搜索表名,要显示所有记录请设为"1=1"
  @orderby:为搜索结果排序,如order by id desc
  @fieldlist:为字段列表,如userid, username
  @curpage:当前页码
  @page_record:每页记录条数
  @Sort:排序标识(如果是倒序排,参数值为desc,为升序,参数值为asc,跟orderby参数是对应的)
结果: 返回表tablename中满足条件where的第curpage页的page_record条记录,结果按orderby排序
*/
CREATE   PROCEDURE  proc_CommonPaging

@tablename   varchar ( 100 ),
@tablefield   varchar ( 20 ),
@where   varchar ( 5000 ),
@orderby   varchar ( 500 ),
@fieldlist   varchar ( 1000 ),
@curpage   int ,
@page_record   int ,
@sort   varchar ( 8 )

AS

BEGIN

  
DECLARE   @cmd   varchar ( 8000 )
  
DECLARE   @uprecord   int
  
DECLARE   @Op   varchar ( 2 --  操作符
   DECLARE   @max_min   varchar ( 4 --  最大/最小计算

  
SET   @op   =   ' < '
  
SET   @max_min   =   ' MIN '
  
IF   @sort   =   ' asc '
      
BEGIN
    
SET   @Op   =   ' > '
            
SET   @max_min   =   ' MAX '
      
END

  
SET   @uprecord = @curpage   *   @page_record
  
  
IF   @curpage   =   0
      
SET   @cmd   =   ' SELECT TOP  ' + cast ( @page_record   AS   NVARCHAR ) + '   ' + @fieldlist + '  FROM  ' + @tablename + '  WHERE  ' + @where + '   ' + @orderby
  
ELSE
    
SET   @cmd   =   ' SELECT TOP  ' + cast ( @page_record   AS   NVARCHAR ) + '   ' + @fieldlist + '  FROM  ' + @tablename + '  WHERE  ' + @where + '  AND  ' + @tablefield + '  
    
' + @op + '  (SELECT  ' + @max_min + ' ( ' + @tablefield + ' )  FROM (SELECT TOP   ' + cast ( @uprecord   AS   NVARCHAR ) + '   ' + @tablefield + '  FROM  ' + @tablename + '  WHERE 
    
' + @where + '   ' + @orderby + ' ) AS TmpTbl ) AND  ' + @where + '   ' + @orderby

  
SET   @cmd   =   @cmd   +   ' ; SELECT COUNT(*) FROM  ' + @tablename + '  WHERE  ' + @where

  
EXEC ( @cmd )
  
PRINT ( @cmd )

END
GO
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值