也谈存储过程分页

原创 2004年07月17日 13:47:00
最近我测试小春写的存储分页,发现有些许问题:
 建立一个test(id,name,fid)
 向test添充几十条数据,使id=1,2,3,4.........(即递增的integer),其他任意
 在T-sql Debugger给改存储过程分别传递如下参数:
    @queryStr= * from test
    @keyField=[ID]     
    @pageSize=3            
    @pageNumber=1
 问题出来了,看输出结果(注意id):
 id        name          fid
 4         kwklover       2
 5         kwklover       2
 6         kwklover       2
 根据传入参数,我们的预期应该是:
 id        name          fid
 1         kwklover       2
 2         kwklover       2
 3         kwklover       2

 下面是我参照小春存储分页写的分页存储过程,可以解决上面的问题:
CREATE Procedure prGetRecordByPage
(
   @PageSize int,   --每页的记录条数 
   @PageNumber int, --当前页面
   @QuerySql varchar(1000),--部分查询字符串,如* From Test order by id desc
   @KeyField varchar(500) 
)
AS
Begin

 Declare @SqlTable AS varchar(1000)
 Declare @SqlText AS Varchar(1000)

 Set @SqlTable='Select Top '+CAST(@PageNumber*@PageSize AS varchar(30))+' '+@QuerySql
 Set @SqlText='Select Top '+Cast(@PageSize AS varchar(30))+' * From '
        +'(
'+@SqlTable+') As TembTbA '
        +'Where
'+@KeyField+' Not In (Select Top '+CAST((@PageNumber-1)*@PageSize AS varchar(30))+' '+@KeyField+' From '
        +'(
'+@SqlTable+') AS TempTbB)'
 Exec(@SqlText)

End
GO

至于效率如何,呵呵,我也不知道,
因为我还不知道怎么测试存储过程的运行效率,希望各位朋友不吝赐教!先行谢过了

通用分页存储过程的使用

看着同事写的通用分页存储过程觉得还不错,分享给大家 1、存储过程 USE [test] GO /****** Object:  StoredProcedure [dbo]....
  • f10_s
  • f10_s
  • 2013年09月10日 16:35
  • 1341

Oracle使用存储过程分页

今天我要说的就是基于Oracle存储过程的一种简单的分页方式,首先就是页面前端发起对分页的请求,然后向Oracle存储过程中传入页面当前数,页面大小,查询的SQL语句,而存储过程返回来的则是数据总条数...
  • lingyiwin
  • lingyiwin
  • 2016年04月26日 17:31
  • 1609

MySql 分页存储过程

DELIMITER $$ #修改分隔符为 $$ DROP PROCEDURE IF EXISTS sp_MvcCommonDataSource$$ #分隔符 CREATE PROCEDURE sp_M...
  • xxj_jing
  • xxj_jing
  • 2014年06月05日 12:55
  • 6126

什么时候用存储过程+分页例子

存储过程一般用于处理比较复杂的任务,基础ms这个平台,可以大大降低耗时,其编译机制也提高了数据库执行速度。 当然在系统控制方便方面,例如当系统进行调整时,这是只需要将后台存储过程进行更改,而不需要更...
  • cc41798520101
  • cc41798520101
  • 2016年08月02日 16:00
  • 915

MYSQL多表分页存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_AllSiteSearch`(IN pagesize int,IN pageindex int,IN s...
  • baby97
  • baby97
  • 2014年12月19日 14:47
  • 1220

MVC之EF(调用存储过程的分页)

今天写了分页,感觉有点难度,搞来搞去,最终还是解决了。我用的是调用存储过程的分页,这个的难度主要是在于存储过程的编写,说实在的其实我也不太会,感觉上很朦胧的。 下面是用EF调用存储过程的方法: ...
  • JLJ_Joker
  • JLJ_Joker
  • 2015年03月25日 22:36
  • 1596

java调用存储过程实现分页功能

创建程序包: SQL> create or replace package mypack 2 as 3 type emp_cursor is ref cursor; 4 end m...
  • xingzhemoluo
  • xingzhemoluo
  • 2014年09月17日 20:10
  • 910

SQLServer千万数量级分页公共存储过程

转自:http://blog.csdn.net/tem168/article/details/6427123 SQLServer千万数量级分页公共存储过程   通用的数据库分页存...
  • chelen_jak
  • chelen_jak
  • 2014年12月11日 21:24
  • 3097

Oracle分页存储过程及PLSQL中的调用脚本

撰写过程:网上搜集测试了好多的Oracle分页存储过程代码,经测试整理后终于通过测试,特分享给大家测试步骤:1运行创建包命令;2、运行创建存储过程命令;3、运行调用分页存储过程语句测试环境:windo...
  • xqf222
  • xqf222
  • 2014年06月10日 16:11
  • 2590

分页-存储过程5种写法 sqlserver分页

分页-存储过程5种写法 sqlserver分页
  • u012726702
  • u012726702
  • 2016年07月03日 12:40
  • 473
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也谈存储过程分页
举报原因:
原因补充:

(最多只允许输入30个字)