赞
踩
在SQLServer中,有时需要数据库里实现SQL结果集遍历,当然首先会想到使用SQL游标,但SQL游标最大的缺点就是复杂和低效。
Create procdure pro
As
Begin
declare @cwbrecord table /*定义订单的表变量 用于遍历订单号*/
(
cwb varchar(50),
flagID TINYINT/*这个表变量中增加一个FLAGID进行数据初始值为0的存放,然后去循环这个记录集,每循环一次,就把对应的FLAGID 的值改成1,然后再根据循环来查找满足条件等于0的情况,每循环一次,处理的记录集就会少一次,达到快速遍历,此种方式比游标 遍历效率高很多*/
)
declare @totalcount int
declare @rownum int
insert into @cwbrecord select ops.cwb,0 from express_ops_cwb
/*设置循环总数*/
set @totalcount = @@ROWCOUNT
/*设置循环起始值*/
set @rownum = 1
/* 循环*/
while @rownum <=@totalcount
begin
declare @cwb varchar(50)
select top 1 @cwb=cwb from @cwbrecord where flagID=0
……你要完成的逻辑
update @cwbrecord set flagID=1 where cwb=@cwb
set @rownum = @rownum + 1
End
End
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。