项目中正在使用的SQL分页存储过程

从别的地方看到的,我加了几句注释:

 

SET  QUOTED_IDENTIFIER  ON  
GO
SET  ANSI_NULLS  ON  
GO


ALTER    PROCEDURE   [ dbo ] . [ Common_Pagination ]  

@tablename   varchar ( 100 ),  -- 要调用的表名
@tablefield   varchar ( 20 ),   -- 排序关键字段
@where   varchar ( 5000 ),    -- 判断语句(如pid=1--分类id为1的下属内容)
@orderby   varchar ( 500 ),   -- 排序方法(如order by id desc)
@fieldlist   varchar ( 1000 ),  -- 要调用的表中的字段列表
@curpage   int ,   -- 当前页码(从0开始计)
@page_record   int -- 要调用的分页记录数
@sort   varchar ( 8 )    -- 判断分页内容的排序方向,desc ,asc,注意这个值应该与上面的order by方向一致

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  
SET   @where   =   ' ( ' + @where + ' ) '  

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  

EXEC ( @cmd
PRINT ( @cmd

END  



GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值