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