前言

在我们日常的开发过程中,我们使用存储过程的频率非常高,特别是是数据的后端分页,

我们常常使用一个公用的存储过程,一次编译,'永久'使用。

分页存储过程

脚本如下:

CREATE PROCEDURE PRO_PAGE
@CONTIDION NVARCHAR(500), //条件 
@SORTBY    NVARCHAR(500), //排序字段
@PAGE      INT,           //当前页码数 
@LIMIT     INT,           //每页记录数
@TOTAL     INT OUTPUT     //输出参数
AS
BEGIN
  DECLARE @SQL1 NVARCHAR(MAX),@SQL2 NVARCHAR(MAX) //声明变量
  //赋值
  SET @SQL1='SELECT @TOTAL=COUNT(1) FROM TABLE1';
  SET @SQL2=';WITH TEMP AS
              (
                 SELECT TOP '+@LIMIT+',A.*,ROW_NUMBER() OVER('+@SORTBY+') AS NUM
                 FROM TABLE1 A '+@CONTIDION+'
              )
              SELECT * FROM TEMP WHERE NUM>='+@PAGE 
  //执行存储过程       
  EXEC sp_executesql @sqlCount, N'@TotalCount INT OUTPUT', @TotalCount OUTPUT
  EXEC(@SQL2) 
END