祝大家新年快乐!!

onenight2004 2004-12-31 12:46:54
顺便问一下,这个存储过程有错吗???

CREATE PROCEDURE dbo.sp_getClubList
(
@int_pagenow int ,
@int_pagesize int ,
@SearchText varchar(100) ,
@int_recordcount int output --就是总贴数
)
AS

SET NOCOUNT ON
DECLARE @CurrentError int
DECLARE @int_allid int
DECLARE @int_beginid int,@int_endid int
DECLARE @int_pagebegin int, @int_pageend int

SELECT @int_allid=Count(info_id) FROM info WHERE flag>=1 and sortid<>0 and title like '%'+@SearchText+'%'
SELECT @int_recordcount=@int_allid --得出总记录数
DECLARE cro_fastread CURSOR SCROLL --游标
FOR SELECT info_id,sortid,c_id,title,contents,content,picture,type,dateandtime FROM info WHERE flag>=1 and sortid<>0 and title like '%'+@SearchText+'%' ORDER BY info_id DESC
--这里定义游标操作,但是不用临时纪录集,而且游标也不需要全部遍历所有纪录集
OPEN cro_fastread --打开游标
SELECT @int_beginid=(@int_pagenow-1)*@int_pagesize+1 --得出该页的第一个纪录ID
SELECT @int_endid = @int_beginid+@int_pagesize-1 --得出该页的最后一个纪录的Id

FETCH ABSOLUTE @int_beginid FROM cro_fastread INTO @int_pagebegin --将他的Id传给一个变量该页开始的Id

IF @int_endid>@int_allid
--这里要注意,如果某一页不足固定页数的纪录时如只有一页纪录,而且纪录少于我们定义的数目或者是最后一页时
FETCH LAST FROM cro_fastread INTO @int_pageend --直接将游标绝对定位到最后一条纪录,得出他的id号来
ELSE
FETCH ABSOLUTE @int_endid FROM cro_fastread INTO @int_pageend
SELECT * FROM info WHERE info_id BETWEEN @int_pageend AND @int_pagebegin ORDER BY info_id DESC
--该页的第一个id和最后一个id得出中间的id来
SELECT @CurrentError = @@Error

--开始清场
CLOSE cro_fastread
DEALLOCATE cro_fastread

IF @CurrentError != 0
BEGIN
GOTO ERROR_HANDLER
END
RETURN

ERROR_HANDLER:
RETURN @CurrentError

GO
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
老夏Max 2004-12-31
  • 打赏
  • 举报
回复
╭╧╮╭╧╮╭╧╮╭╧╮
║新│║年│║快│║樂│
╘∞╛╘∞╛╘∞╛╘∞╛
hglhyy 2004-12-31
  • 打赏
  • 举报
回复
语法没有错吧!



新年快乐
long0104 2004-12-31
  • 打赏
  • 举报
回复
新年快乐
luisic 2004-12-31
  • 打赏
  • 举报
回复
新年快乐

34,590

社区成员

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

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