sql serve 数据库游标的使用

时间:2023-03-09 22:44:21
sql  serve 数据库游标的使用

  什么是游标?

通俗来讲,个人理解,游标是对一个查询结果集,每次取出一条数据进行处理操作。

  使用场景:

例如,我们要修改一个表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