一个分页存储过程

原创 2004年07月09日 15:56:00

来源:http://dotnet.mblogger.cn/zzjjmm/posts/1603.aspx

CREATE PROCEDURE dbo.PostGetPostByPage

 (
  @page int,
  @forumid int,
  @topornot int
 )

AS
 /* SET NOCOUNT ON */
 declare @begin int,@end int,@f int,@l int,@count int,@top int
 
 select @top=count(*) from Posts as p1 where p1.PostID=(select min(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID)
 and p1.ForumID=@forumid and PostType=4
 
 if @topornot=1
 
 select p1.PostType,p1.Title,p1.UserName,p1.TotalViews,p1.PostID,p1.ThreadID,p1.ForumID,FileName,
 Reply=(select Count(*) from Posts as p2 where p1.ThreadID=p2.ThreadID)-1,
 LastDate=(select Max(PostDate)from Posts as p2 where p1.ThreadID=p2.ThreadID),
 LastWriter=(select UserName from posts as p2 where p2.PostID=(select Max(PostID)from Posts as p2 where p1.ThreadID=p2.ThreadID))
 from Posts as p1 where p1.PostID=(select min(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID)
 and p1.ForumID=@forumid and PostType=4
 
 else if @topornot=2
 begin
 
 select @count=count(*) from Posts as p1 where p1.PostID=(select min(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID)
 and p1.ForumID=@forumid and PostType<>4
 
 declare my_cursor SCROLL CURSOR for
 select p1.PostID from Posts as p1 where p1.PostID=(select min(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID)
 and p1.ForumID=@forumid and PostType<>4 order by (select max(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID) desc
 open my_cursor
 
 
 
 if @count+@top<25 and @page=1
 begin
 select @f=1
 select @l=@count
 end
 if @count+@top>=25 and @page=1
 begin
 select @f=1
 select @l=25-@top
 end
 
 if(@page*25-@top>@count) and @page>1
 begin
 select @f=(@page-1)*25+1-@top
 select @l=@count
 end
 if(@page*25-@top<=@count) and @page>1
 begin
 select @f=(@page-1)*25+1-@top
 select @l=@page*25-@top
 end
 
 
 fetch absolute @f from my_cursor into @begin
 fetch absolute @l from my_cursor into @end
 set nocount off
  
 select p1.PostType,p1.Title,p1.UserName,p1.TotalViews,p1.PostID,p1.ThreadID,p1.ForumID,FileName,
 Reply=(select Count(*) from Posts as p2 where p1.ThreadID=p2.ThreadID)-1,
 LastDate=(select Max(PostDate)from Posts as p2 where p1.ThreadID=p2.ThreadID),
 LastWriter=(select UserName from posts as p2 where p2.PostID=(select Max(PostID)from Posts as p2 where p1.ThreadID=p2.ThreadID))
 from Posts as p1 where p1.PostID=(select min(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID)
 and p1.ForumID=@forumid and PostID<=@begin and PostID>=@end and PostType<>4 order by (select max(PostID) from Posts as p2 where p1.ThreadID=p2.ThreadID) desc
 
 close my_cursor
 end
 RETURN @@Rowcount

GO

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

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

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

分页-存储过程5种写法 sqlserver分页
  • u012726702
  • u012726702
  • 2016年07月03日 12:40
  • 527

sql 存储过程千万条数据分页

1.新建表(数据库TestDB) USE [TestDB] GO /****** Object:  Table [Data].[TestInfo]    Script Date: 2017/6/3...
  • bodilove
  • bodilove
  • 2017年06月30日 14:28
  • 495

Oracle使用存储过程分页

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

使用存储过程进行分页查询

使用存储过程进行分页查询
  • hjnth
  • hjnth
  • 2016年04月09日 13:36
  • 1811

通用分页存储过程的使用

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

sql server 带输入输出参数的分页存储过程(效率最高)

create procedure proc_page_withtopmax ( @pageIndex int,--页索引 @pageSize int,--每页显示数 @pageCount in...
  • kingmax54212008
  • kingmax54212008
  • 2015年07月14日 11:34
  • 5735

SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如...
  • limingblogs
  • limingblogs
  • 2016年04月25日 21:53
  • 1407

C#调用SQL Server分页存储过程

C#调用SQL Server分页存储过程
  • roy_88
  • roy_88
  • 2016年05月04日 22:26
  • 3688

多表联合查询sql存储过程带分页

多表联合查询sql存储过程带分页
  • mofijeck
  • mofijeck
  • 2015年03月04日 14:56
  • 1533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个分页存储过程
举报原因:
原因补充:

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