Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ERROR 1318 - O QUE FAZER?

*INCORRECT NUMBER OF ARGUMENTS OFR FUNCTION sucos_vendas.sorteia_vendedor; expected 0, got 2 *

FUNCTION

CREATE DEFINER=`root`@`localhost` FUNCTION `sorteia_vendedor`() RETURNS varchar(5) CHARSET utf8mb4
BEGIN
    DECLARE vReturn VARCHAR (5);
    DECLARE num_max_tab INT;
    DECLARE num_aleatorio INT;
    SELECT COUNT(*) INTO num_max_tab FROM tabela_de_vendedores;
    SET num_aleatorio = f_numero_aleatorio(1, num_max_tab);
    SET num_aleatorio = num_aleatorio - 1;
    SELECT MATRICULA INTO vReturn FROM tabela_de_vendedores
    LIMIT num_aleatorio, 1;
    RETURN vReturn;
    END

PROCEDURE

DELIMITER $$
CREATE PROCEDURE `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 = sorteia_cliente();
SET vVendedor = sorteia_vendedor();
INSERT INTO notas_fiscais 
(CPF, MATRICULA, DATA_VENDA, NUMERO, IMPOSTO)
VALUES (vCliente, vVendedor, vData, vNumeroNota, 0.18);
SET vItens = sorteia_vendedor(1, max_itens);
WHILE vContador <= vItens
DO
    SET vProduto = sorteia_produto();
    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 $$
2 respostas

Olá Suellen,

Pelo erro que você informou 1318, ele diz respeito ao número incorreto de argumentos….. provavelmente, na hora que você faz a chamada ‘ CALL nome_da_sua_procedure; ‘ ele diz que espera zero argumentos, porém você enviou dois… Tentar rever a forma que você faz a chamada.

solução!

oi Aparecida encontrei o erro, no SET vItens eu havia colocado sorteia_vendedor e é f_numero_aleatorio

Insira aqui a descrição dessa imagem para ajudar na acessibilidade