Usei o while in, para ele ficar repetindo
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_order`(vDate Date, max_itens int, max_quantidade int)
BEGIN
declare Cliente varchar(11);
declare Produto varchar(10);
declare Vendedor varchar(5);
declare quantidade int;
declare quantidade_itens int;
declare preco_item float;
declare numero_venda int;
declare contador_itens int default 0;
set Cliente = f_random_cliente();
set Vendedor = f_random_vendedor();
set quantidade_itens = randint_mas_min(1,max_itens);
select max(numero) into numero_venda from notas_fiscais;
set numero_venda = numero_venda +1;
insert into notas_fiscais values (Cliente, Vendedor, vDate, numero_venda, 0.1);
while contador_itens < quantidade_itens
do
set quantidade = randint_mas_min(1,max_quantidade);
set Produto = f_random_produto();
while Produto in (select codigo_do_produto from itens_notas_fiscais where numero = numero_venda)
do
set quantidade = randint_mas_min(1,max_quantidade);
set Produto = f_random_produto();
end while;
select preco_de_lista into preco_item from tabela_de_produtos where codigo_do_produto = Produto;
insert into itens_notas_fiscais values(numero_venda, Produto, quantidade, preco_item);
set contador_itens = contador_itens + 1;
end while;
END