SQL - 分页存储过程

Posted 贝尔塔猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL - 分页存储过程相关的知识,希望对你有一定的参考价值。

http://www.jb51.net/article/71193.htm

http://www.webdiyer.com/utils/spgenerator/

create PROCEDURE [dbo].[Proc_SqlPageByRownumber]
(
 @tbName VARCHAR(255),   --表名
 @tbGetFields VARCHAR(1000)= *,--返回字段
 @OrderfldName VARCHAR(255),  --排序的字段名
 @PageSize INT=20,    --页尺寸
 @PageIndex INT=1,    --页码
 @OrderType bit = 0,    --0升序,非0降序
 @strWhere VARCHAR(1000)=‘‘,  --查询条件
 @TotalCount INT OUTPUT   --返回总记录数
)
AS
-- =============================================
-- Author:  allen (liyuxin)
-- Create date: 2012-03-30
-- Description: 分页存储过程(支持多表连接查询)
-- Modify [1]: 2012-03-30
-- =============================================
BEGIN
 DECLARE @strSql VARCHAR(5000) --主语句
 DECLARE @strSqlCount NVARCHAR(500)--查询记录总数主语句
 DECLARE @strOrder VARCHAR(300) -- 排序类型

 --------------总记录数---------------
 IF ISNULL(@strWhere,‘‘) <>‘‘
   SET @strSqlCount=Select @TotalCout=count(*) from  + @tbName +  where 1=1 + @strWhere
 ELSE SET @strSqlCount=Select @TotalCout=count(*) from  + @tbName

 exec sp_executesql @strSqlCount,N@TotalCout int output,@TotalCount output
 --------------分页------------
 IF @PageIndex <= 0 SET @PageIndex = 1

 IF(@OrderType<>0) SET @strOrder= ORDER BY +@OrderfldName+ DESC 
 ELSE SET @strOrder= ORDER BY +@OrderfldName+ ASC 

 SET @strSql=SELECT * FROM 
 (SELECT ROW_NUMBER() OVER(+@strOrder+) RowNo,+ @tbGetFields+ FROM  + @tbName +  WHERE 1=1  + @strWhere+ ) tb 
 WHERE tb.RowNo BETWEEN +str((@PageIndex-1)*@PageSize+1)+ AND  +str(@PageIndex*@PageSize)

 exec(@strSql)
 SELECT @TotalCount
END




DECLARE    @return_value int,
        @TotalCount int

EXEC    @return_value = [dbo].[Sp_LeePageProc]
        @tbName = NT002_StoreInfo,
        @tbGetFields = N*,
        @OrderfldName = N代码,
        @PageSize = 20,
        @PageIndex = 1,
        @OrderType = 0,
        @TotalCount = @TotalCount OUTPUT

 

以上是关于SQL - 分页存储过程的主要内容,如果未能解决你的问题,请参考以下文章

存储过程sql server中的分页

SQL 分页查询存储过程中order by 后面不能传变量的问题怎么解决

SQL存储过程分页(通用的拼接SQL语句思路实现)

sql server 分页存储过程

Sql分页存储过程

原创SQL分页查询存储过程