我的这个游标第三个记录有2个,为什么

sisiz 2008-08-25 04:53:43


declare @strName varchar(100)

declare str_cur CURSOR
FOR select * from dbo.f_split('1:2:3',':')
OPEN str_cur

FETCH NEXT FROM str_cur INTO @strName
select @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=1

while @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM str_cur INTO @strName
select @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=@strName

END

CLOSE str_cur
deallocate str_cur
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQLnewlearner 2008-08-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 sisiz 的帖子:]


declare @strName varchar(100)

declare str_cur CURSOR
FOR select * from dbo.f_split('1:2:3',':')
OPEN str_cur

FETCH NEXT FROM str_cur INTO @strName
select @strName --删除
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=1 --删除

while @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM str_cur INTO @strName
select @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=@strName …
[/Quote]
terrybogero 2008-08-26
  • 打赏
  • 举报
回复
你没搞好下面两个的关系,
FETCH NEXT FROM str_cur INTO @strName
while @@FETCH_STATUS=0

@@FETCH_STATUS=0这个是表示游标FETCH NEXT FROM str_cur INTO @strName正常下移
,仔细感觉一下你的循环,它会在最后一条记录上处理两次,因为最后一次是在@@FETCH_STATUS<>0的时候处理的!
中国风 2008-08-25
  • 打赏
  • 举报
回复
FETCH NEXT FROM str_cur INTO @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=1

while @@FETCH_STATUS=0
BEGIN
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=@strName
FETCH NEXT FROM str_cur INTO @strName
END

--FETCH NEXT FROM str_cur INTO @strName的順序
sp4 2008-08-25
  • 打赏
  • 举报
回复
declare @strName varchar(100) 

declare str_cur CURSOR
FOR select * from dbo.f_split('1:2:3',':')
OPEN str_cur

FETCH NEXT FROM str_cur INTO @strName
--select @strName
--UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=1

while @@FETCH_STATUS=0
BEGIN

--select @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=@strName

FETCH NEXT FROM str_cur INTO @strName

END

close str_cur
deallocate str_cur
sp4 2008-08-25
  • 打赏
  • 举报
回复
declare @strName varchar(100)

declare str_cur CURSOR
FOR select * from dbo.f_split('1:2:3',':')
OPEN str_cur

FETCH NEXT FROM str_cur INTO @strName
--select @strName
--UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=1

while @@FETCH_STATUS=0
BEGIN

--select @strName
UPDATE tbDicInclude set OoperationTagc=0 WHERE ItemID=@strName

FETCH NEXT FROM str_cur INTO @strName

END

close str_cur
deallocate str_cur

34,590

社区成员

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

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