`

存储过程中的分页技巧(最实用的)

阅读更多
大家在开发时都会面临分页的问题,
1.假分页
把数据库的内容全查出来帮到控件上然后再分页显示给用户,效率非常低,2千数据一下凑合还能用,两千条以上就没法用了
2.数据MMSSQl自带的函数number_over
据说效率低,个人感觉有时候也用不成。
3主要介绍第三种,任何时候都刚刚的
ALTER PROCEDURE [dbo].[P_PC_GetList]
-- Add the parameters for the stored procedure here
@Import BIT,
@CurrentPageIndex INT,
@PageSize INT,
@where NVARCHAR(1000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(4000)
IF @Import=1 BEGIN
SET @sql = 'SELECT [ID]
  ,[PCMonth]
  ,[PCCompany]
  ,[PCDepartment]
  ,[ContractNumber]
  ,[ContractName]
  ,[FirstParty]
  ,[FirstPartyID]
  ,[SignDate]
  ,[SignPersonID]
  ,[SignPerson]
  ,[ResponsiblePersonName]
  ,[ResponsiblePersonId]
  ,[ContractMoney]
  ,[Currency]
  ,[ReceivedMoney]
  ,[TransitAccount]
  ,[PCPossibility]
  ,[MonthPromisePC]
  ,[NoPromiseReason]
  ,[TypeSatus]
  ,[NotComeAmount]
  ,[IsDeleted]
  ,[Remark] FROM T_PC_PaymentCollection'
IF(@where != '')
BEGIN
SET @sql = @sql + ' where  ' + @where
END
EXEC(@sql)
END



DECLARE @PageLowerBound INT
DECLARE @PageUpperBound INT
IF @CurrentPageIndex = -1 SET @PageLowerBound = 0
ELSE SET @PageLowerBound = @PageSize * @CurrentPageIndex

SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
-- Create a temp table TO store the select results
CREATE TABLE #PageIndexFor_Docu
(
IndexId int IDENTITY (0, 1) NOT NULL,
EID int
)

IF @CurrentPageIndex = -1 AND @PageSize < 2147483647
SET ROWCOUNT @PageSize
    -- Insert statements for procedure here

SET @sql = 'INSERT INTO #PageIndexFor_Docu SELECT [ID]'

IF (@where != '')
BEGIN
SET @sql = @sql + ' where  ' + @where
--Set @sql = @sql + ' where TypeSatus IN (''同步'',''保存'' ) AND ' + @where
END

EXEC (@sql)

SELECT [ID]
,[PCMonth]
,[PCCompany]
,[PCDepartment]
,[ContractNumber]
,[ContractName]
,[FirstParty]
,[FirstPartyID]
,[SignDate]
,[SignPersonID]
,[SignPerson]
,[ResponsiblePersonName]
,[ResponsiblePersonId]
,[ContractMoney]
,[Currency]
,[ReceivedMoney]
,[TransitAccount]
,[PCPossibility]
,[MonthPromisePC]
,[NoPromiseReason]
,[TypeSatus]
,[NotComeAmount]
,[IsDeleted]
,[Remark]
    FROM T_PC_PaymentCollection A
INNER JOIN #PageIndexFor_Docu PIndex
ON PIndex.EID  = A.ID 
WHERE PIndex.IndexId >= @PageLowerBound AND PIndex.IndexId <= @PageUpperBound 
ORDER BY PIndex.IndexId 

END
分享到:
评论

相关推荐

    jsp软件工程案例精解源代码下载,鲁晓东

    在“实用技巧程序”目录中放置的是本书精选的实用例子程序,在此目录中 放置的子目录根据本章的节数来编号,同时,以程序实现的功能为名称。如:2.3 高级搜索,表示在该目录下放置了实现高级搜索的JSP程序代码。 ...

    asp.net知识库

    分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 ...

    JDBC 3.0数据库开发与设计

    4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...

    教材订购系统(jsp+servlet+mysql)130226.rar

    此外,这个系统还涉及到了一些常用的Web开发技术和技巧,如表单验证、分页查询、文件上传下载等,对于初学者来说,这是一个很好的实践项目。总之,这个130226.rar压缩包为计算机专业的学生和开发者提供了一个很好的...

    jsp在线考试系统

    &lt;br&gt; 光盘目录具体结构如下: &lt;br&gt;├─实用技巧程序 │ ├─2.1 Cookie有效时间设置 │ ├─2.2 分页显示 │ ├─2.3 高级搜索 │ ├─2.4 记录的修改 │ ├─2.5 会员登录 │ ├─2.6 ...

    PHP网络编程技术与实践 源码

    4.1.7 存储过程 4.1.8 出错处理 4.2 SQL Server数据库的相关知识 4.3 Oracle数据库相关知识 4.4 本章小结 第5章 文件处理与数据存储 5.1 文件系统处理 5.1.1 打开文件 5.1.2 关闭文件 5.1.3 显示文件内容 5.1.4 从...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...

    最好的asp CMS系统科讯CMSV7.0全功能SQL商业版,KesionCMS V7.0最新商业全能版-免费下载

    我们认为“简单就是美”,因此一直以来,科汛开发人员在开发过程中无处不充分考虑用户的使用习惯,尽最大可能降低用户的使用门槛,让用户关注于内容维护本身, 而不需要投入过多的时间来学习系统的使用技巧,在细节...

    Windows驱动开发技术详解的光盘-part1

    本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...

    PHP程序开发范例宝典III

    个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。  《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也...

Global site tag (gtag.js) - Google Analytics