biaoyue用游标将设备与SIM卡一一关联

来源:这里教程网 时间:2026-03-02 10:36:53 作者:
SQL Server2008数据库已存在两张表设备表Device和SIM卡表Sim
Device表中有99900条数据,deviceId分两批连续:
DeviceId BETWEEN 37251413 AND 37252912  (总数1500)
DeviceId BETWEEN 71659789 AND 71758188(总数98400)

Sim表中有100000条数据,Sim卡连续:
SimId BETWEEN 14423 AND 114421 (总数10w)

Device表和Sim表无相同字段,现在需要将99900条Sim表的SimId字段的值写入Device表的SimId表中,不能出现重复取值的情况

方法如下


declare @DeviceId int, --定义一个变量
@SID int; --定义一个变量


declare my_cursor cursor scroll dynamic --scroll表示可以向前或向后移动   dynamic:表示可写也可读,
for
select d.DeviceId from Device d where d.DeviceId BETWEEN 37251413 AND 37252912 


open my_cursor --打开游标


fetch next from my_cursor into @DeviceId --游标停在第一条记录前面,第一次执行,测试有没有记录存在
while(@@fetch_status=0) --取数据,直到-2即没有记录
begin


select TOP 1 @SID =SimId FROM Sim s where s.SimId not in (select d.SimId from Device d where d.simid is not null) and SimId>14422
update [Device] set SimId = @SID where DeviceId = @DeviceId


fetch next from my_cursor into @DeviceId
end
close my_cursor
deallocate my_cursor

相关推荐