Dúvida com Stored Procedure /- complexa
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:
Obrigado a todos.
Edson
[color=green:4671c781dc]Título editado. Nâo poste totalmente em maiúsculas.[/color:4671c781dc]
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
Curtidas 0