Ao dar CALL
na minha Stored Procedure consta um erro (Error Code: 1048. Column 'NUMERO' cannot be null), já alterei os lugares que estavam faltando o vNumeroNota
, mas não consigo encontrar o erro na rotina.
Como o erro é cannot be null, devo colocar na variável DECLARE vNumeroNota INT NOT NULL
?
CREATE PROCEDURE `p_inserir_venda` (vData DATE, max_itens INT, max_quantidade INT)
BEGIN
DECLARE vCliente VARCHAR(11);
DECLARE vProduto VARCHAR(10);
DECLARE vVendedor VARCHAR(5);
DECLARE vQuantidade INT;
DECLARE vPRECO FLOAT;
DECLARE vItens INT;
DECLARE vNumeroNota INT;
DECLARE vContador INT DEFAULT 1;
SELECT MAX(numero) +1 INTO vNumeroNota FROM notas_fiscais;
SET vCliente = f_cliente_aleatorio();
SET vVendedor = f_vendedor_aleatorio();
INSERT INTO notas_fiscais (CPF, MATRICULA, DATA_VENDA, NUMERO, IMPOSTO)
VALUES (vCliente, vVendedor, vData, vNumeroNota, 0.18);
SET vItens = f_numero_aleatorio(1, max_itens);
WHILE vContador <= vItens
DO
SET vProduto = f_produto_aleatorio();
SET vQuantidade = f_numero_aleatorio(10, max_quantidade);
SELECT PRECO_DE_LISTA INTO vPreco FROM tabela_de_produtos
WHERE CODIGO_DO_PRODUTO = vProduto;
INSERT INTO itens_notas_fiscais (NUMERO, CODIGO_DO_PRODUTO, QUANTIDADE, PRECO)
VALUES (vNumeroNota, vProduto, vQuantidade, vPreco);
SET vContador = vContador + 1;
END WHILE;
END