Stored Procedure - SP_AtualizaEstoque
17/12/2020
0
gostaria da ajuda de vocês para transformar essa stored procedure a baixo que vim neste artigo da davmedia "Implementando controle de estoque no MySQL com triggers e procedure" ; so que ja tentei e não estou conseguindo transformar para firebird.
Agradeço a todos que puderem me ajudar.
DELIMITER //
CREATE PROCEDURE `SP_AtualizaEstoque`( `id_prod` int, `qtde_comprada` int, valor_unit decimal(9,2))
BEGIN
declare contador int(11);
SELECT count(*) into contador FROM estoque WHERE id_produto = id_prod;
IF contador > 0 THEN
UPDATE estoque SET qtde=qtde + qtde_comprada, valor_unitario= valor_unit
WHERE id_produto = id_prod;
ELSE
INSERT INTO estoque (id_produto, qtde, valor_unitario) values (id_prod, qtde_comprada, valor_unit);
END IF;
END //
DELIMITER ;
Joaci Queiroz
Posts
17/12/2020
Alex William
Veja se este material te ajuda:
https://firebirdsql.org/refdocs/langrefupd21-ddl-procedure.html
Espero ter ajudado. :D
17/12/2020
Emerson Nascimento
CREATE PROCEDURE SP_AtualizaEstoque( id_prod int, qtde_mov int, tipo_mov char(1), valor_unit decimal(9,2)) AS BEGIN -- garante que o produdo sempre existirá na tabela -- só precisa tomar cuidado com saídas de produtos que -- ainda não estejam na tabela, pra evitar saldo negativo if not exists(SELECT id_produto FROM estoque WHERE id_produto = :id_prod) INSERT INTO estoque (id_produto, qtde, valor_unitario) values (:id_prod, 0, 0); -- agora efetua a movimentação solicitada if (upper(:tipo_mov) = 'E') -- entrada UPDATE estoque SET qtde = qtde + :qtde_mov, valor_unitario = :valor_unit WHERE id_produto = :id_prod; else UPDATE estoque SET qtde = qtde - :qtde_mov, valor_unitario = :valor_unit WHERE id_produto = :id_prod; END
18/12/2020
Joaci Queiroz
CREATE PROCEDURE SP_AtualizaEstoque( id_prod int, qtde_mov int, tipo_mov char(1), valor_unit decimal(9,2)) AS BEGIN -- garante que o produdo sempre existirá na tabela -- só precisa tomar cuidado com saídas de produtos que -- ainda não estejam na tabela, pra evitar saldo negativo if not exists(SELECT id_produto FROM estoque WHERE id_produto = :id_prod) INSERT INTO estoque (id_produto, qtde, valor_unitario) values (:id_prod, 0, 0); -- agora efetua a movimentação solicitada if (upper(:tipo_mov) = 'E') -- entrada UPDATE estoque SET qtde = qtde + :qtde_mov, valor_unitario = :valor_unit WHERE id_produto = :id_prod; else UPDATE estoque SET qtde = qtde - :qtde_mov, valor_unitario = :valor_unit WHERE id_produto = :id_prod; END
obrigado, valeu
Clique aqui para fazer login e interagir na Comunidade :)