SQL游标 更新
2015-12-22 17:59
351 查看
--定义游标
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 ;
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 ;
相关文章推荐
- 关于MYSQL保存emoji表情及openfire处理办法
- ActiveMQ中使用mysql做持久化报错:Cannot execute statement: impossible to write to binary log since BINLOG_FORM
- SQL Server 存储过程
- SQL Server——报表服务
- mysql闪退或者can not connect 127.0.0.1
- win10 安装sql server 2008(r2)
- mysql错误代码对照大全
- sql server 2012 如何收缩事务日志
- mysql表关联中的索引使用情况
- mysql表关联中的索引使用情况
- 学习和使用REDIS的一些资源
- Linux中Oracle的sqlplus下退格和Del键无效的问题解决
- mysqldump 使用方法
- SQL Server——SQL Server Profiler
- 查看mysql数据库大小
- mysql导入数据库时出现40101错误解决方法
- 如何测试WEB应用程序防止SQL注入***
- [置顶]mysql 语法一 :case when详解
- redis配置文件详解(转)
- window下php5.6-x64-ts可用php_redis.dll文件