什么是游标?
通俗来讲,个人理解,游标是对一个查询结果集,每次取出一条数据进行处理操作。
使用场景:
例如,我们要修改一个表300条数据,且每条数据修改的内容不一样,那么平时用的update dbo.table set 字段名='' where 字段=''就满足不了需要了。
游标是使用如下:
--select cast(ceiling(rand() * 10000) as int)
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM TRushBuyOrder) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--你想执行的操作
--UPDATE 表名 SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM 表名 WHERE CURRENT OF My_Cursor; --删除
declare @number nvarchar(500)
set @number='201712251145'+(select cast(ceiling(rand() * 10000) as nvarchar))
print @number
--update TRushBuyOrder set OrderNumber=@number
FETCH NEXT FROM My_Cursor; --读取下一行数据
--或者
--FETCH NEXT FROM My_Cursor into @number; --读取下一行数据,并赋值
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO