SQL Server 公共分页存储过程及使用方法

-- 使用方法:在获取查询列表的存储过程中执行,并指定参数就行了
-- exec ListPage @SQL, @PageSize, @PageNo, @OrderStr, @OrderType
-- @SQL   查询语句
-- @PageSize 数据数量
-- @PageNo  当前页码
-- @OrderStr 排序字段
-- @OrderType 排序 0 ASC 1 DESC
USE [DataBaseName]--数据库名称
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE ListPage
 @InSQL varchar(max),
 @RowNum int,
 @PageNo int,
 @IndexWord varchar(200),
 @Order bit=0
AS
 DECLARE @SQL varchar(max)
 DECLARE @OrderMode varchar(10)
 DECLARE @BeginRow int
 DECLARE @EndRow int
BEGIN
 IF @Order = 0
  BEGIN
   SET @OrderMode = ‘ASC‘
  END
 ELSE
  BEGIN
   SET @OrderMode = ‘DESC‘
  END
 
 IF @PageNo = 1
  BEGIN
   SET @BeginRow = 1
   SET @EndRow = @RowNum
  END
 ELSE
  BEGIN
   SET @BeginRow = (@RowNum * (@PageNo-1))+1
   SET @EndRow = @BeginRow + @RowNum - 1
  END
 SET @sql = ‘SELECT *,ROW_NUMBER() OVER(ORDER BY ‘+ @IndexWord +‘ ‘+ @OrderMode +‘) AS ROWNUMBER FROM (‘+ @InSQL +‘) AS A‘
 SET @sql = ‘select * from (‘+ @sql +‘) as b where b.ROWNUMBER BETWEEN ‘+ convert(varchar(10),@BeginRow) +‘ AND ‘+ convert(varchar(10),@EndRow) +‘‘
 Exec (@sql)
END
GO

时间: 2024-10-11 18:28:19

SQL Server 公共分页存储过程及使用方法的相关文章

SQL SERVER 通用分页存储过程

SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和我沟通,他们使用jQuery.DataTable.js插件,而且经过了公司底层的封装,pageIndex需要变动一下,变成pageIndex*pageSize来传. 也就是说按每页显示30条算,第一次传0,第二次传30这样来计算,我也是醉了. 1.传pageIndex和

SQL Server 2008 分页存储过程

在用的,已经不知道出处了,如果有侵权请告诉我,我立刻删掉. USE [ActivaOnlineSupport] GO /****** Object: StoredProcedure [dbo].[PROCE_PAGECHANGE] Script Date: 08/13/2014 13:45:17 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[PROCE_PAGECHANGE] ( @

Sql Server通用分页存储过程

Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 @ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段为*,其它逗号分隔) @OrderClause nvarchar(1000), --排序从句(不包含order by) @WhereClause nvarchar(1000) =N' 1=1 ',   

SQL SERVER 通用分页存储过程,两种用法任你选

写在前面 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和我沟通,他们使用jQuery.DataTable.js插件,而且经过了公司底层的封装,pageIndex需要变动一下,变成pageIndex*pageSize来传. 也就是说按每页显示30条算,第一次传0,第二次传30这样来计算,我也是醉了. 1.传pageIndex和pageSize CREATE

Sql server中根据存储过程中的部分信息查找存储过程名称的方法【视图和Function】

1.查询的语句: select a.id,b.name,a.*,b.* from syscomments a join sysobjects b on a.id=b.id where b.xtype='P' and a.text like '%usp_cm%' b.xtype='P'指定在什么类型的范围进行搜索 '%usp_cm%'就是你能记得的存储过程中的内容. 2.查找类型: select distinct xtype from sysobjects 找到数据库中所有的对象类型 P是存储过程

SQL Server基础之<存储过程>

  简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述  SQL Server中的存储过程是使用T_SQL编写的代码段.它的目的在于能够方便的从系统表中查询信息,或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口.在很多情况下,一些代码会被开发者重复编写多次,如果每次都编写相同功能

Sql Server 数据分页

1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定量的数据,这就是数据要分页. 2.常用的数据分页方法 我们经常会碰到要取n到m条记录,就是有分页思想,下面罗列一下一般的方法. 我本地的一张表 tbl_FlightsDetail,有300多W记录,主键 FlightsDetailID(Guid),要求按照FlightsDetailID排序 取 3000001 到3000010 之间的10条记录,也是

浅谈SQL Server数据库分页

数据库分页是老生常谈的问题了.如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定.但是有时由于限制,需要使用存储过程来实现.在SQLServer中使用存储过程实现分页的已经有很多方法了.之前在面试中遇到过这一问题,问如何高效实现数据库分页.刚好上周在业务中也遇到了这个需求,所以在这里简单记录和分享一下. 一 需求 这里以SQLServer的示例数据库NorthWind为例,里面有一张Product表,现在假设我们的需求是要以UnitPrice降序排列,并且分页,每一页10条

SQL Server 2000 系统存储过程

SQL Server 2000 系统存储过程 在 Microsoft? SQL Server? 中,许多管理和信息活动可以通过系统存储过程执行.系统存储过程按这些分类分组. 分类 描述 Active Directory 过程 用于在 Microsoft Windows? 2000 Active Directory? 中注册 SQL Server 实例和 SQL Server 数据库. 目录过程 执行 ODBC 数据字典功能,并隔离 ODBC 应用程序,使之不受基础系统表更改的影响. 游标过程 执