Questão FC374529
Considere o seguinte cenário em certo banco de dados de uma loja on-line criada no Mysql Workbench: Determinado profissional deverá criar uma stored procedure chamada CalcularTotal
Linguagem SQL
Instituto Consulplan · 2024
Considere o seguinte cenário em certo banco de dados de uma loja on-line criada no Mysql Workbench:

Determinado profissional deverá criar uma stored procedure chamada CalcularTotalPedido, que recebe um parâmetro PedidoID e calcula o valor total do pedido com base nos detalhes do pedido. Representa corretamente a implementação dessa stored procedure:
- DELIMITER $
CREATE PROCEDURE CalcularTotalPedido (PedidoID INT)
BEGIN
SELECT SUM(Preco * Quantidade) AS Total
FROM ItensPedido
JOIN Produto ON ItensPedido.ProdutoID = Produto.ProdutoID
WHERE ItensPedido.PedidoID = PedidoID;
END $
DELIMITER;
- DELIMITER $
CREATE PROCEDURE CalcularTotalPedido (PedidoID INT)
BEGIN
SELECT SUM(Preco * Quantidade) AS Total
FROM ItensPedido
JOIN Produto ON ItensPedido.ProdutoID = Produto.ProdutoID
GROUP BY PedidoID
HAVING ItensPedido.PedidoID = PedidoID;
END $
DELIMITER;
- DELIMITER $
CREATE PROCEDURE CalcularTotalPedido (PedidoID INT)
BEGIN
SELECT SUM(Preço * Quantidade) AS Total
FROM ItensPedido
JOIN Produto ON ItensPedido.ProdutoID = Produto.ProdutoID
WHERE PedidoID = PedidoID;
END $
DELIMITER;
- DELIMITER $
CREATE PROCEDURE CalcularTotalPedido (PedidoID INT)
BEGIN
SELECT SUM(Preco * Quantidade) AS Total
FROM ItensPedido
WHERE PedidoID = PedidoID
JOIN Produto ON ItensPedido.ProdutoID = Produto.ProdutoID;
END $
DELIMITER;
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
O bloco apresentado cria corretamente a stored procedure chamada CalcularTotalPedido e recebe o parâmetro PedidoID, usando DELIMITER para permitir o corpo da rotina.
Dentro do corpo, o SELECT realiza a agregação \( \sum (Preco \times Quantidade) \) para computar o total do pedido e o expõe com o alias AS Total.
O JOIN entre ItensPedido e Produto traz o campo Preco, já que ItensPedido só guarda o ProdutoID. Sem essa junção não seria possível multiplicar preço por quantidade.
A cláusula WHERE usa ItensPedido.PedidoID = PedidoID para filtrar apenas os itens do pedido informado, garantindo que a agregação seja feita somente sobre as linhas relevantes.
O resultado é retornado como um conjunto de linhas com a soma total do pedido; a construção é sintaticamente correta para o MySQL e eficiente por filtrar antes da agregação.
Conteúdo do catálogo FC Concursos · Atualizado em