SQL存储过程分页(通用的拼接SQL语句思路实现)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL存储过程分页(通用的拼接SQL语句思路实现)相关的知识,希望对你有一定的参考价值。
多表通用的SQL存储过程分页
USE [EmailCenter] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Script Date: 2016/2/29 11:00:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(200),---表名 @strFld nvarchar(max), --字段字符串 @strWhere varchar(max), --where条件 @PageIndex int, --页码 @PageSize int, --每页容纳的记录数 @Sort VARCHAR(255), --排序字段及规则,不用加order by @Total int output ) AS declare @strSql nvarchar(max) set nocount on; set @strSql=‘ SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ‘ + @Sort + ‘) AS rownum, ‘ + @strFld + ‘ FROM ‘ + @tab + ‘ where 1=1 ‘ + @strWhere + ‘) AS Dwhere WHERE rownum BETWEEN ‘ + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ‘ and ‘ + cast((@PageIndex*@PageSize) as nvarchar(20)) exec (@strSql) set @strSql=‘SELECT @Total = COUNT(0) FROM ‘ + @tab + ‘ WHERE 1=1 ‘ + @strWhere EXECUTE sp_executesql @strSql,N‘@Total INT OUTPUT‘,@Total OUTPUT set nocount off; GO
以上是关于SQL存储过程分页(通用的拼接SQL语句思路实现)的主要内容,如果未能解决你的问题,请参考以下文章
SQL server2005上千万条数据分页查询怎么做优化?
Oracle [存储过程] 执行动态拼接SQL语句并返回结果??