Ajuda com sintaxe de função Mysql

Preciso que o resultado desse select retorne como resultado da função, mas da erro de sintaxe.
Alguém pode ajudar?

DELIMITER //
CREATE FUNCTION soma (n1 int)  RETURNS decimal
BEGIN
SET @soma := 0;
SELECT * FROM venda,(SELECT @soma := SUM(produtos.preco_unidade * itens_venda.quantidade)
FROM produtos, itens_venda
WHERE  codigo_produto = codigo_produto_iv AND codigo_venda = 1;

RETURN @soma;
END
; //
1 curtida

Tenta assim:

se você precisar desta parte
SELECT * FROM venda vai ter que melhorar mais acredito que vc não precisa se tivero o ID da venda em ’ itens_venda’ falow?

O erro de sintaxe parou, no entanto o erro agora é o 1415, diz que não tem permissão para retornar o conjunto de resultado de uma função…

Crie uma Procedure.

É um trabalho que tenho que entregar, precisa ter procedures, trigger, e functions. Falta apenas a função pra completar.

Veja se isso resolve.

CREATE FUNCTION soma (n1 int) RETURNS decimal DETERMINISTIC
BEGIN
DECLARE soma DECIMAL;
SELECT SUM(produtos.preco_unidade * itens_venda.quantidade) AS resultado FROM produtos, itens_venda WHERE codigo_produto = codigo_produto_iv AND codigo_venda = n1;
SET soma = resultado;
RETURN soma;
END;

Continua o mesmo erro, 1415