在SQL Server2005中添加了一个新的函数:row_number(),返回结果集分区内行的序列号。
那么我现在就用这个函数做一个通用的分页方法,在和以前大家经常用到的那三种方法相比,它的优点:第一,当然是比较通用了,第二:性能很出色,有90多万条的数据,用这样的存储过程建立正确的索引,只有几十毫秒的时间。
代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: hao.w
-- Create date: 2008.1.15
-- Description: SqlServer2005通用分页方法
-- =============================================
ALTER PROCEDURE sp_CommonPage
(@sql nvarchar(4000), @BeginIndex int, @EndIndex int)
AS
BEGIN
DECLARE @ResultSql nvarchar(4000);
DECLARE @OrderStr nvarchar(400);
DECLARE @SelectStr nvarchar(3000);
DECLARE @OtherStr nvarchar(1000);
DECLARE @ColumnsStr nvarchar(2000);
DECLARE @OrderIndex int;
DECLARE @FromIndex int;
SET @OrderIndex = Charindex('Order',@sql,0);
SET @FromIndex= Charindex('From',@sql,0);
SET @SelectStr = Left(@sql,@FromIndex-1);
SET @ColumnsStr = Substring(@Sql,7,@FromIndex-7);
SET @OtherStr = Substring(@sql, @FromIndex,@OrderIndex-@FromIndex);
SET @ORderStr = Right(@sql,len(@sql)-@OrderIndex+1);
SET @ResultSql = @SelectStr + ',row_number() Over('+@OrderStr+') RowNumber '
+@OtherStr;
Set @ResultSql = 'Select '+@ColumnsStr+' from('+@ResultSql+')Temp where RowNumber between '
+Str(@BeginIndex) + ' AND ' + Str(@EndIndex)
EXEC(@ResultSql)
END
使用该存储过程务必要在Where 子句中使用的列和Order By子句中使用的列
分享到:
相关推荐
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
MySql 分页 存储过程 MySql 分页 存储过程 MySql 分页 存储过程
分页存储过程 分页存储过程 分页存储过程 sql代码
oracle分页存储过程,oracle分页存储过程
在分页存储过程中,主要理解了变量的动态赋值和输入输出参数的使用就非常简单了 下面为调用方法: var c_Preccount number; var c_Ppagecount number; var c_cur refcursor; exec proc_SpPag(1,'SELECT * FROM T_...
通用分页存储过程 适用于分页 的通用存储过程
万能的分页存储过程 可实现各种情况下的分页功能 简单好用
sql分页存储过程 CREATE PROCEDURE [dbo].[dbTab_PagerHelper] @TableName VARCHAR(50), --表名 @FieldNames VARCHAR(1000), --显示列名,如果是全部字段则为* @WhereString VARCHAR(256) = NULL, --查询条件 ...
分页存储过程示例系统,采用存储过程分页!
高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程
oracle分页存储过程详细的编码 可直接使用 拿去使用吧
MYSQL分页存储过程 非常实用的东西哦 希望大家能用上
高效多条件 Oracle 分页存储过程 ,快速分页
SqlServer 分页 存储过程
终极版 分页存储过程 高效 条件 排序 Oracle
通用Mysql分页存储过程,支持多表查询。
通用sql分页存储过程,提供12参数可供选择。其中,提供两种分页方案被选择和相关排序方式,支持自定义查询、自定义排序等