sql 双游标循环
需要有俩个参数来执行双循环,但是写好怎么调试都有些问题,只能循环一次,也查看了很多帖子,但是没有什么进展。突然想到尝试内循环中重复打开内游标,最后得到结论。
--注释部分是之前代码,只能内循环一次,即只执行外游标的第一个参数,后续不执行
declare @f1 int;
declare @f2 nchar(10);
declare cursor_name1 cursor for
select f2 from table2
declare cursor_name2 cursor for select f1 from table1
open cursor_name1
--open cursor_name2 --此处不可添加,不然只内循环一次,挪到内循环里执行
fetch next from cursor_name1 into @f2
while @@FETCH_STATUS=0
begin
print(@f2)open cursor_name2 fetch next from cursor_name2 into @f1 while @@FETCH_STATUS=0 begin declare @sql varchar(100);select @sql='所需前缀' + @f1 +','+@f2 ;--拼接一个sqlprint @sql;--exec (@sql) ;FETCH NEXT FROM cursor_name2 INTO @f1;end CLOSE cursor_name2;FETCH next from cursor_name1 into @f2;
end
--CLOSE cursor_name2;--此处不可添加,不然只内循环一次,挪到内循环里执行
CLOSE cursor_name1;
DEALLOCATE cursor_name1;
DEALLOCATE cursor_name2;