Dúvida com Stored Procedure /- complexa

Firebird

02/03/2008

Olá pessoal.
Estou com uma dúvida em relação a criação de Stored Procedures.
Sempre que precisei usar SPs, as criei a partir do IBExpert.
Só que agora preciso de uma stored procedure que tenho que criar na unha e estou meio perdido...

Trata-se de uma stored procedure para atualizar o Estoque (campo ESTOQUE) da tabela PRODUTOSESTOQUELOJAS.
Preciso passar três parâmetros: CodLoja e CodProduto, e mais a Quantidade que desejo incrementar o estoque.

A SP deve verificar se o produto já existe cadastrado (se achar algum registro com os campos CodLoja e CodProduto que confiram com os parâmetros).

Caso exista, deve-se dar um UPDATE na tabela para atualizar o estoque somando à variáveL INCREMENTO.
Caso não exista ainda cadastrado, deve-se dar um INSERT na tabela cadastrando o produto com a quantidade em estoque que passei como parâmetro INCREMENTO.

O código que tenho (e que não funciona) é esse abaixo:

SET TERM ^ ;

CREATE PROCEDURE SP_ALTERA_ESTOQUE(
  CODLOJA INTEGER,
  CODPRODUTO INTEGER,
  INCREMENTO INTEGER)
AS
BEGIN
  IF (Select Count(*) From PRODUTOSESTOQUELOJAS WHERE ((PRODUTOSESTOQUELOJAS.CODLOJA = :CODLOJA) AND (PRODUTOSESTOQUELOJAS.CODPRODUTO = :CODPRODUTO) > 0) THEN
  BEGIN
    BEGIN TRANSACTION
    UPDATE PRODUTOSESTOQUELOJAS SET PRODUTOSESTOQUELOJAS.ESTOQUE = PRODUTOSESTOQUELOJAS.ESTOQUE + :INCREMENTO
    COMMIT
  END
  ELSE
  BEGIN
    BEGIN TRANSACTION
    INSERT INTO PRODUTOSESTOQUELOJAS (ESTOQUE) VALUES (INCREMENTO)
    COMMIT
  END
END;

SET TERM ; ^


Obrigado a todos.

Edson

[color=green:4671c781dc]Título editado. Nâo poste totalmente em maiúsculas.[/color:4671c781dc]


Edsoncabral

Edsoncabral

Curtidas 0
POSTAR