1
resposta

[Dúvida] Como usar a FUNÇÃO

Criei a função mas queria realizar um teste com ela, mas apresenta estouro aritmético, não consegui identificar onde pode estar o erro. Segue a função e como tentei chama-la.

CREATE FUNCTION FaturamentoTotal (@bairro VARCHAR(50)) -- NOME E PARAMETRO QUE VAI INFORMAR
RETURNS VARCHAR
AS 
BEGIN 

    DECLARE @FATURAMENTO FLOAT--
    SELECT @FATURAMENTO = SUM(INF.QUANTIDADE*INF.PREÇO) FROM ITEM_NF INF
    JOIN NF ON INF.NUMERO = NF.NUMERO
    JOIN CLIENTES C ON NF.CPF = C.CPF
    WHERE C.BAIRRO = @bairro

RETURN @FATURAMENTO
END;

SELECT dbo.FaturamentoTotal('Tijuca') AS Faturamento;
1 resposta

Oi Patricia, tudo bem?

O estouro aritmético ocorre quando tentamos armazenar um valor numérico em uma variável que não tem capacidade suficiente para suportar esse valor.

Notei que o retorno da função está definida como VARCHAR, ou seja, não está retornando um valor numérico, o tipo de retorno da função deve ser DECIMAL ou FLOAT.

Abaixo deixo um exemplo de código.

CREATE FUNCTION FaturamentoTotal (@bairro VARCHAR(50)) -- NOME E PARAMETRO QUE VAI INFORMAR
RETURNS DECIMAL(18, 2)
AS 
BEGIN 

    DECLARE @FATURAMENTO DECIMAL(18, 2)
    SELECT @FATURAMENTO = SUM(INF.QUANTIDADE * INF.PRECO) 
    FROM ITEM_NF INF
    JOIN NF ON INF.NUMERO = NF.NUMERO
    JOIN CLIENTES C ON NF.CPF = C.CPF
    WHERE C.BAIRRO = @bairro

    RETURN @FATURAMENTO
END;

Reforço que você também pode consultar o gabarito em " Ver Opinião do Instrutor".

Espero que dê certo!

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!