利用sql server的游标刷数据
一、前言
在工作中,经常会遇到需要刷大批量数据的情况,这时候不论是写update,还是利用sql脚本都比较麻烦,这里分享一个我经常使用的方法,比较简单快捷。
二、游标的介绍
游标(处理数据的一种方法),这里直接引用百度百科的介绍。
三、游标的使用方法(具体实例)
declare @id varchar(50)
declare @name varchar(50)
declare @record varchar(50)
declare @time varchar(50)
declare cursor_insert cursor for select '3' as id, '测试' as name, '0' as record, '2021-09-09' as time
open cursor_insert fetch next from cursor_insert into @id,@name,@record,@time
while @@fetch_status=0
begin
insert into gender(GENDER_ID,GENDER_NAME,RECORD_FLAG,DATA_TIMESTAMP) values (@id,@name,@record,@time)
fetch next from cursor_insert into @id,@name,@record,@time
end close cursor_insert
deallocate cursor_insert
这是一段简单的例子!
这段sql主要是将一条数据插入到表中,以此为例,可以在创建游标的时候使用查询多条数据,将其插入。
- 创建需要的字段以及游标
declare @id varchar(50)
declare @name varchar(50)
declare @record varchar(50)
declare @time varchar(50)
declare cursor_insert cursor for
创建了4个字段,这是相当于4个标识字段,可以对应表中的字段,并且创建了游标为cursor_insert ,在cursor for 后写所需的数据,可以是sql语句等。
- 打开游标
open cursor_insert fetch next from cursor_insert into @id,@name,@record,@time
打开游标并将游标向下移一行,将数据放入@id,@name,@record,@time中
- 通过游标插入数据
while @@fetch_status=0
begin
insert into gender(GENDER_ID,GENDER_NAME,RECORD_FLAG,DATA_TIMESTAMP) values (@id,@name,@record,@time)
fetch next from cursor_insert into @id,@name,@record,@time
end
begin end 中可以做你想要的操作,注意需要用fetch next from …into …用来将游标向下移一行
- 关闭游标并摧毁游标
close cursor_insert
deallocate cursor_insert
四、结尾
以上就是游标的操作,有方便的地方,也有不方便的地方,我主要是利用游标来更新大批量数据、插入大批量数据,通过客户给的Excel导入到临时表,再刷入数据库中,mysql也有游标的操作,只是一些语句可能和sql server的不同,本篇文章主要是对sql server 中的游标进行讲解。