求助存储过程翻页(在手机上显示)

ldl999 2004-10-14 02:04:58
有一表如下:
CREATE TABLE [code_zpzw] (
[seq] [int] IDENTITY (1, 1) NOT NULL ,
[prc_code] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[prc_desc] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
其中prc_code 是职位代码
prc_desc 是职位描述
表中记录如下:
seq prc_code prc_desc
1 1 美术
2 2 教师
3 3 工程师
现在表中有90条记录
要求实现的功能是(一次只能显示5条,因为手机文字限制)
发送H 从表中取出前5条记录
发送N 取接下来的5条记录
发送P 取前5条记录
请问各位,有什么好方法能实现此功能(最好用游标)

...全文
148 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bhw0871 2004-10-14
  • 打赏
  • 举报
回复
to zjcxc(邹建):
set recordset=recordset.nextrecordset
怎么使用?
另外请见
http://community.csdn.net/Expert/topic/3448/3448617.xml?temp=.7803003
不知sp_cursorfetch 返回的结果集是有什么特别之处?

ldl999 2004-10-14
  • 打赏
  • 举报
回复
因为发送的P或N是应该往下走的
要不要把这个记录下来
ldl999 2004-10-14
  • 打赏
  • 举报
回复
我本身选择的记录
记录没有往下走啊
只是前5条
什么问题
zjcxc 元老 2004-10-14
  • 打赏
  • 举报
回复

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_splitpage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_splitpage]
GO

/*--利用SQL未公开的存储过程实现分页

方法简单且效率高,已知的问题就是要多返回一个空的记录集

解决的方法是在前台调用时,用 set recordset=recordset.nextrecordset
的方法跳过第一个记录集

此方法由J9988提供,我只是将它改成了方便调用的存储过程

--邹建 2004.05(引用请保留此信息)--*/

/*--调用示例

exec p_splitpage 'select id,name from sysobjects where xtype=''U'' order by id',1,5
--*/
create procedure p_splitpage
@sql nvarchar(4000), --要执行的sql语句
@currentpage int=2, --要显示的页码
@pagesize int=10, --每页的大小
@pagecount int=0 out --总页数
as
set nocount on
declare @p1 int

exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output

select @pagecount=ceiling(1.0*@pagecount/@pagesize)
,@currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
go

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧