SQL 中循环

一、普通循环

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
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值