Coin163

首页 > SQL Server2005通用分页存储过程

SQL Server2005通用分页存储过程

相关标签: sql

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:SQL server2005中用pivot实现行列转换

 --> --> (Roy)生成测试数据 if not object_id('Class') is null drop table Class Go Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int) Insert Class select N'张三',N'语文',78 union all select N'张三',N'数学',87 union all

在SQL Server2005中添加了一个新的函数:row_number(),返回结果集分区内行的序列号。

那么我现在就用这个函数做一个通用的分页方法,在和以前大家经常用到的那三种方法相比,它的优点:第一,

相关推荐:使用MFC ODBC +SQL Server2005 实现数据库编程 - 博客频道 - CSDN.NET

最近在项目中添加了用户数据管理功能,使用MFC ODBC连接SQL Server2005数据库。由于以前没有接触过数据库具体的实现,因此花了两周时间学习了数据库的知识,并实现了项目中的基本功能。感觉虽然存在很多问题,但还是有不少收获。下面总结一下,希望能够给跟我

当然是比较通用了,第二:性能很出色,有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 Server2005中添加了一个新的函数:row_number(),返回结果集分区内行的序列号。 那么我现在就用这个函数做一个通用的分页方法,在和以前大家经常用到的那三种方法相比,它的优点:第一,

------分隔线----------------------------