como criar essa procedure ?

Firebird

03/05/2007

bom galera,
preciso de uma procedure que atualize o estoque de produtos,
se OPERACAO = E(ENTRADA) atualize para +
se OPERACAO = S(SAIDA) atualize para -

alguma coisa paracido com esse scritp(tentei mais não deu certo)
CREATE PROCEDURE ATUALIZA_ESTOQUE (
    codigo_barras bigint,
    quantidade integer,
    operacao char(1))
as
begin
  /* Entrada no Estoque */
  if (operacao = ´E´) then
    update produtos p set p.quantidade = p.quantidade + quantidade
    where p.codigo_barras = codigo_barras;

  /*Saida do Estoque*/
  if (operacao = ´S´) then
    update produtos p set p.quantidade = p.quantidade - quantidade
    where p.codigo_barras = codigo_barras;
  suspend;
end;



Fabiano Góes

Fabiano Góes

Curtidas 0

Respostas

Fabiano Góes

Fabiano Góes

03/05/2007

galera consegui,
não sei se da melhor maneira mais está atualizando certinho.
eis o script caso alguem necessite:
CREATE PROCEDURE ATUALIZA_ESTOQUE (
    codigo_barras bigint,
    quantidade integer,
    operacao char(1))
as
declare variable qtde_atual integer;
declare variable qtde_atualiza integer;
BEGIN
  select p.quantidade from produtos p
  where (p.codigo_barras = :codigo_barras)
  into:QTDE_ATUAL;

  IF (:OPERACAO = ´E´) THEN
    qtde_atualiza =: qtde_atual + :quantidade;
  IF (:OPERACAO = ´S´) THEN
    qtde_atualiza =: qtde_atual - :quantidade;

  update produtos p set p.quantidade =:QTDE_ATUALIZA where p.codigo_barras = :codigo_barras;

  SUSPEND;

END^


se alguem tiver alguma solução melhor e quizer apresentar fique a vontade !!!


GOSTEI 0
POSTAR