1
resposta

Outra solução para inserção aleatoria de produtos

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
1 resposta

Show de bola essa outra solução Pedro!!!