1
resposta

Fiz esse Script de forma diferente

DELIMITER $$
CREATE PROCEDURE Tabela_Numeros ()
begin
DECLARE vNUMERO int;
DECLARE CONTADOR int default 0;
WHILE CONTADOR < 100 DO
select f_NUM_ALEATORIO (0,1000) into vNUMERO;
insert into tabela_aleatorios (NUMERO) values (vNUMERO);
set CONTADOR = CONTADOR + 1;
end WHILE;
select * from tabela_aleatorios;
end $$
DELIMITER ;
1 resposta

Oi, Raphael! Tudo certo por aí?

Peço desculpas por demorar a te responder.

Parabéns pela resolução do exercício, mandou super bem!

Uma dica para deixar a sua Stored Procedure ainda mais legal é deletar os registros de TABELA_ALEATORIOS sempre que realizarmos o comando abaixo:

CALL Tabela_Numeros()

Dessa maneira, a cada execução temos uma tabela com distintos números aleatórios! Para isso, precisaremos adicionar o seguinte trecho de código a nossa Stored Procedure:

DELETE FROM TABELA_ALEATORIOS;

Quando usamos o comando DELETE sem nenhum filtro, todos os dados de determinada tabela são excluídos, e é justamente isso que estamos buscando. Com a inserção desse código, chegamos no seguinte resultado:

DELIMITER $$
CREATE PROCEDURE Tabela_Numeros ()
begin
    DECLARE vNUMERO int;
    DECLARE CONTADOR int default 0;
    DELETE FROM TABELA_ALEATORIOS;
    WHILE CONTADOR < 100 DO
        select f_NUM_ALEATORIO (0,1000) into vNUMERO;
        insert into tabela_aleatorios (NUMERO) values (vNUMERO);
        set CONTADOR = CONTADOR + 1;
    end WHILE;
    select * from tabela_aleatorios;
end $$
DELIMITER ;

Assim, antes de iniciar o laço de repetição WHILE, a tabela de números perde todos os valores nela armazenados, possibilitando o INSERT de novos resultados.

Espero que tenha gostado da dica, Raphael. Sinta-se livra para adicioná-la ou não a sua Stored Procedure! Se surgir alguma dúvida, fico à disposição para ajudar.

Um forte abraço!