为什么这个游标只能执行一次呢。。。。。

HelpMeNow 2004-11-22 02:45:39
if @varFlag in ('ALL','DEPT')
begin
if @varFlag='ALL'
begin
Declare crCreate1 cursor for
Select MI02,MI03 from ATNMH INNER JOIN ATNMI ON ATNMH.MH01=ATNMI.MI01
Where (MI05='12:30' or MI07='12:30' or MI09='12:30') and MI03>=@curDateFirst and MI04<@curDateNext
open crCreate1
fetch next from crCreate1 into @Id,@NewDate
begin
Delete from ATNMD where MD01=@id and MD02=@NeWdate and MD03='13:30'
Insert into ATNMD (MD01,MD02,MD03) values (@ID,@NewDate,'13:30')
fetch next from crCreate1 into @Id,@NewDate
end
close crCreate1
deallocate crCreate1
end
end

我这一句,我执行出来是四个记录,
Select MI02,MI03 from ATNMH INNER JOIN ATNMI ON ATNMH.MH01=ATNMI.MI01
Where (MI05='12:30' or MI07='12:30' or MI09='12:30') and MI03>=@curDateFirst and MI04<@curDateNext
但执行游标只能执行一次,
这是为什么呢。
...全文
125 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vinsonshen 2004-11-22
  • 打赏
  • 举报
回复
if @varFlag in ('ALL','DEPT')
begin
if @varFlag='ALL'
begin
Declare crCreate1 cursor for
Select MI02,MI03 from ATNMH INNER JOIN ATNMI ON ATNMH.MH01=ATNMI.MI01
Where (MI05='12:30' or MI07='12:30' or MI09='12:30') and MI03>=@curDateFirst and MI04<@curDateNext
open crCreate1
fetch next from crCreate1 into @Id,@NewDate
while @@fetch_status=0
begin
Delete from ATNMD where MD01=@id and MD02=@NeWdate and MD03='13:30'
Insert into ATNMD (MD01,MD02,MD03) values (@ID,@NewDate,'13:30')
fetch next from crCreate1 into @Id,@NewDate
end
close crCreate1
deallocate crCreate1
end
end
liangx326 2004-11-22
  • 打赏
  • 举报
回复
好好看看帮助吧,没有用while语句循环,当然就只能执行一次了。
lsxaa 2004-11-22
  • 打赏
  • 举报
回复
没加循环

WHILE @@FETCH_STATUS = 0
BEGIN
...
END

34,590

社区成员

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

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