前言
在我们日常的开发过程中,我们使用存储过程的频率非常高,特别是是数据的后端分页,
我们常常使用一个公用的存储过程,一次编译,'永久'使用。
分页存储过程
脚本如下:
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