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
-- --------------------------------------------------------------------------------
-- 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