SQL游标 更新

--定义游标
DECLARE cur_getaddress CURSOR
FOR
SELECT
new_a
,new_b
,new_c
,new_d

FROM table
WHERE (new_a is not null and new_b is not null and new_x IS NULL) or
(new_c is not null and new_d is not null and new_y IS NULL )
--打开游标
OPEN cur_getaddress
DECLARE @a VARCHAR(20) , @b VARCHAR(20),@c VARCHAR(20) , @d VARCHAR(20)
FETCH NEXT FROM cur_getaddress INTO @a, @b ,@c,@d
WHILE @@fetch_status = 0
BEGIN

SET NOCOUNT ON ;
SET xact_abort ON
--开始事务
BEGIN TRANSACTION
--延时150毫秒
WAITFOR DELAY '00:00:00.150'
--更新
UPDATE table
SET new_x = dbo.[GetAddressByLonLat](@a,@b)
WHERE new_a=@a AND new_b = @b AND new_x IS NULL
--延时150毫秒
WAITFOR DELAY '00:00:00.150'
UPDATE table
SET new_y = dbo.[GetAddressByLonLat](@c,@d)
WHERE new_c=@c AND new_d = @d AND new_y IS NULL
COMMIT TRANSACTION
--取下一个数据
FETCH NEXT FROM cur_getaddress INTO  @a, @b ,@c,@d

END
CLOSE cur_getaddress ;
DEALLOCATE cur_getaddress ;

原文地址:https://www.cnblogs.com/BinBinGo/p/5067487.html