Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha resolução

CREATE FUNCTION ValorComDesconto (
    @CODIGO VARCHAR(10),
    @DESCONTO FLOAT
)
RETURNS FLOAT
AS
BEGIN
    DECLARE @PRECO FLOAT
    SELECT @PRECO = SUM([PREÇO DE LISTA] - ([PREÇO DE LISTA] * @DESCONTO))
    FROM [TABELA DE PRODUTOS]
    WHERE [CODIGO DO PRODUTO] = @CODIGO
    RETURN @PRECO
END;

SELECT dbo.ValorComDesconto('1000889', 0.20);

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, Ycaro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Uma dica interessante para o futuro é usar a função COALESCE() sempre que quiser evitar que um resultado NULL cause erros em cálculos. Essa função substitui valores nulos por um valor padrão, garantindo que a execução continue sem problemas.


CREATE FUNCTION ValorComDesconto (
    @CODIGO VARCHAR(10),
    @DESCONTO FLOAT
)
RETURNS FLOAT
AS
BEGIN
    DECLARE @PRECO FLOAT;
    SELECT @PRECO = SUM([PRECO DE LISTA] - ([PRECO DE LISTA] * @DESCONTO))
    FROM [TABELA DE PRODUTOS]
    WHERE [CODIGO DO PRODUTO] = @CODIGO;
    RETURN COALESCE(@PRECO, 0);
END;
GO

-- Exemplo de chamada:
SELECT dbo.ValorComDesconto('1000889', 0.20);

Este código calcula o total com desconto para o produto informado e retorna 0 se não houver registro, evitando erros com valores nulos.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!