Eu e um amigo estávamos fazendo uma atividade para a faculdade, quando nos deparamos com um loop infinito, mesmo tendo uma condição para incrementar o indice, nós resolvemos isso com uma gambiarra, mas fica a dúvida, porque esse código não esta funcionando?
Obs: Todas as declare possuem @ antes da variável, porém o guj reconhecia como marcador de usuário.
declare y as Integer
declare i as Integer
declare random_number as Integer
set i = 0
set y = 0
insert into dbo.grupos
values (‘A’,1)
insert into dbo.grupos
values (‘B’,2)
insert into dbo.grupos
values (‘C’,3)
insert into dbo.grupos
values (‘D’,4)
while i < 4
BEGIN
select random_number =(20-5+1) * RAND() + 1
	if(y <4)
		BEGIN
		if(i = 0)
			BEGIN
				
				if not exists (select codigotime from dbo.grupos where codigotime = random_number)
				begin
					insert into dbo.grupos   
				values ('A',random_number)
				set y = y +1 
				end
				
			END
		
		if(i = 1)
			BEGIN
				if not exists (select codigotime from dbo.grupos where codigotime = random_number)
				begin
					insert into dbo.grupos
					values ('B',random_number)
					set y = y +1
				end
			END
		
		if(i = 2)
			BEGIN
				if not exists (select codigotime from dbo.grupos where codigotime = random_number)
				begin
					insert into dbo.grupos
					values ('C',random_number)
					set y = y +1
				end
			END
		
		
	   if(i = 3)
		BEGIN
		 if not exists (select codigotime from dbo.grupos where codigotime = @random_number)
		  begin
			insert into dbo.grupos
			values ('D',random_number)
			set y = y +1
		  end
		END
		
		END
	   if(y = 4)
			BEGIN
				set y = 0
				set i = i + 1	
			END 
END
select * from dbo.grupos
truncate table dbo.grupos