Estou o dia todo tentando descobrir o motivo do warning. Eu preciso inserir dados do Carro nas Vagas que estão disponíveis e tentei usar cursores, mas dentre as 100 vagas que criei, apenas 4 são preenchidas (e todas da mesma categoria):
Antes eu preencho as vagas como desocupada e com uma categoria aleatória (as categorias vão de 1 a 4):
delimiter $
create procedure InsereDadosVagaDesocupada()
begin
declare cont int default 0;
while (cont < 100) do
insert into Vaga (Status,IDCategoria) values ('DESOCUPADA',floor(1+rand()*4));
set cont = cont +1;
end while;
end
$
Depois criei a procedure para inserir os carros nas vagas certas, mas preenche apenas 4 vagas e todas da categoria 1 e aparece o warning: 29 No data - zero rows fetched, selected, or processed
delimiter $
create procedure InsereDadosVagaOcupada()
begin
declare existe_mais_linhas int default 0;
declare vPlaca varchar(45);
declare vCategoria int;
declare vID int;
/*define as variáveis que serão selecionadas de Carro*/
declare cursor2 cursor for select PlacaCarro,IDCategoria from estacionamento.Carro;
declare cursor1 cursor for select IDVaga from estacionamento.Vaga;
/*define o valor para 1 se não existir mais linhas*/
declare continue handler for not found set existe_mais_linhas = 1;
/*abre o cursor*/
open cursor1;
open cursor2;
/*inicia o loop*/
simple_loop:loop
/*define onde os valores selecionados serão inseridos*/
fetch cursor1 into vID;
fetch cursor2 into vPlaca,vCategoria;
/*se não existir mais linhas sai do loop*/
if existe_mais_linhas = 1 then
leave simple_loop;
end if;
/*atualiza a tabela de acordo com os dados selecionados*/
update Vaga set PlacaCarro = vPlaca, Status = 'OCUPADA' where Vaga.IDCategoria = vCategoria and IDVaga = vID;
end loop simple_loop;
/*fecha o cursor*/
close cursor1;
close cursor2;
end
$
Nunca havia usado cursores antes, mas foi a única solução que encontrei. Não tenho ideia de como resolver isso. Alguém me ajuda, por favor!
Eu coloquei uns comentários do que eu entendi de cursores, me corrijam se eu estiver errada em algum ponto. Obrigada!