百万数据库循环取值进行更新的算法

billrobin 2010-09-11 07:32:00
我有一个百万数据库,需要循环取值进行计算,现在是用游标每次只能取88888 条记录,超过十万,就根本算出来,这样很麻烦,哪位有没有百万数据库循环取值进行更新的算法 ,



begin

Declare GuestCursor Cursor For
Select top 88888 XLH,SL from CP_SSQ6_005 where xtbz='0' order by XLH asc;
Open GuestCursor
Fetch Next From GuestCursor into @V_XLH,@V_SL;
WHILE @@FETCH_STATUS = 0
Begin
update CP_SSQ6_005 set xtbz='1' where xlh=@V_XLH;

set @V_SL=rtrim(ltrim(@V_SL));
set @V_1=substring(@V_SL,1,2);
set @V_2=substring(@V_SL,3,2);
set @V_3=substring(@V_SL,5,2);
set @V_4=substring(@V_SL,7,2);
set @V_5=substring(@V_SL,9,2);
set @V_6=substring(@V_SL,11,2);

Select @V_or=dbo.F_GetOrder_2_3(@V_SL)

set @T_1=CAST(@V_1 AS decimal(18,0))
set @T_2=CAST(@V_2 AS decimal(18,0))
set @T_3=CAST(@V_3 AS decimal(18,0))
set @T_4=CAST(@V_4 AS decimal(18,0))
set @T_5=CAST(@V_5 AS decimal(18,0))
set @T_6=CAST(@V_6 AS decimal(18,0))

set @T_JE=@T_1+@T_2+@T_3+@T_4+@T_5+@T_6;



if(@T_JE>=121)
begin

update CP_SSQ6_005 set scbz='1',xtbz='1' where xlh=@V_XLH;
waitfor delay '00:00:00';

--
end;


Fetch Next From GuestCursor into @V_XLH,@V_SL;
end
Close GuestCursor
DealLocate GuestCursor
end
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
billrobin 2010-09-15
  • 打赏
  • 举报
回复
哪位兄弟行行好,帮我写一个例子吧?
winner2050 2010-09-11
  • 打赏
  • 举报
回复
楼主想想还是不用循环法更新数据吧。

你这么折腾,起码有一个小时用户无法插入数据。
黄_瓜 2010-09-11
  • 打赏
  • 举报
回复
这是干啥?
wuyq11 2010-09-11
  • 打赏
  • 举报
回复

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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