This here works and has only one cursor:
if exists(select object_id('tempdb..#TestId1'))
drop table #TestId1
if exists(select object_id('tempdb..#TestId2'))
drop table #TestId2
if exists(select object_id('tempdb..#result'))
drop table #result
create table #TestId1(col_1 varchar(100))
create table #TestId2(col_2 varchar(100))
create table #result (col_1 varchar(100), col_2 varchar(100))
set rowcount 0
insert into #TestId1(col_1 )
select col='one'
union all select col='two'
union all select col='three'
union all select col='four'
union all select col='five'
union all select col='six'
union all select col='seven'
union all select col='eigh'
insert into #TestId2(col_2 )
select col='fiftythree'
union all select col='fiftyfour'
union all select col='fiftytwo'
union all select col='fiftyfive'
union all select col='fiftyone'
DECLARE @sectblcnt int
select @sectblcnt=count(*) from #TestId2
DECLARE @sectableNo int
DECLARE @rowno int
declare @col_1 varchar(100), @col_2 varchar(100)
set @rowno=0
DECLARE curs CURSOR FOR SELECT col_1 FROM #TestId1
OPEN curs
FETCH NEXT FROM curs INTO @col_1
WHILE @@FETCH_STATUS = 0
BEGIN
set @rowno=@rowno+1;
set @sectableNo = @rowno % @sectblcnt
set rowcount @sectableNo
select @col_2=col_2 from #TestId2
insert into #result(col_1, col_2)
values(@col_1, @col_2)
FETCH NEXT FROM curs
INTO @col_1
END
CLOSE curs
DEALLOCATE curs
set rowcount 0
select * from #result