Procedure Calcula Saldo por Produto

Exemplo de Store Procedure realizado em base de dados MySQL onde irá calcular o saldo de estoque por produto independentemente da data que for.




-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `CalculaSaldo`(in acodigo_produto integer)
BEGIN
    declare varsomaentrada decimal(8,2);
    declare varsomasaida decimal(8,2);
    declare varsaldo decimal(8,2);

    declare centradas cursor for select coalesce (sum(quantidade),0) as entrada from movimento_estoque
    where tipo_operacao = 'entrada' and codigo_produto = acodigo_produto;

    declare csaidas cursor for select coalesce (sum(quantidade),0) as saida from movimento_estoque
    where tipo_operacao = 'saida' and codigo_produto = acodigo_produto;

    open centradas;
    open csaidas;
    
    fetch centradas into varsomaentrada;
    fetch csaidas into varsomasaida;
    
    set varsaldo = varsomaentrada - varsomasaida;
    
    close centradas;
    close csaidas;
    
    update produto set saldo = varsaldo where codigo_produto = acodigo_produto;
END

Nenhum comentário:

Postar um comentário