需要有俩个参数来执行双循环,但是写好怎么调试都有些问题,只能循环一次,也查看了很多帖子,但是没有什么进展。突然想到尝试内循环中重复打开内游标,最后得到结论。
--注释部分是之前代码,只能内循环一次,即只执行外游标的第一个参数,后续不执行
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 ;--拼接一个sql
print @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;