一、普通循环
delete from test2 --要插入的表,先删除
declare @cnt int --定义记录数目
declare @i int --定义变量
declare @id int --定义变量
select @cnt= count(1) from test1 --询出记录数,就是循环的个数
set @i=1 --赋值
set @id = -1 ---赋值
while @i<=@cnt --循环
begin
select top 1 @id = id from test1 where id > @id --要查询的表
insert into test2(id) values(@id) --插入语句,插入的是变量Id
select @i=@i+1 --循环+1
end
select * from test2 --查询插入的结果
二、游标循环
DECLARE @ProcessID int
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT ProcessID FROM oprprocess) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @ProcessID; --读取第一行数据(将MemberAccount表中的UserId放到@UserId变量中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @ProcessID; --打印数据(打印MemberAccount表中的UserId)
INSERT INTO cfgprotocol VALUES (@ProcessID, 'YF1', '0', '标志A', '0', '2020-06-28 16:00:00');
FETCH NEXT FROM My_Cursor INTO @ProcessID; --读取下一行数据(将MemberAccount表中的UserId放到@UserId变量中)
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO