Bom dia galera, tudo bem? Estava desenvolvendo uma Storage Procedure e encontrei algumas dificuldades. O código
(algoritmo) que criei é esse:
CREATE PROCEDURE insertItemCompra
{@quantidade real = NULL, @valor real = NULL, @valor real = NULL, @codTipoCarne int = NULL, @codCompra int = NULL } AS BEGIN DECLARE @faltam int = @quantidade SELECT SUM(c.quantidade) FROM Carne as c WHERE (c.quantidade >= @quantidade) AND (c.codTipoCarne = @codTipoCarne) /* SE o SELECT acima retornar uma quantidade (somada) que supre a quantidade pedida */ /* Então eu faço um laço de repetição*/ /* SELECT TOP 1 c.quantidade FROM Carne as c WHERE (c.quantidade >= @quantidade) AND (c.codTipoCarne = @codTipoCarne) ORDER BY dataValidade ASC */ /* SE c.quantidade > @faltam do select acima */ /* Subtraio c.quantidade = c.quantidade - @faltam */ /* SENÃO */ /* @faltam = @faltam - @quantidade */ /* c.quantidade = 0 (update nessa linha do select) */ /* Passa pra próxima linha do select */ /* FIM DO LAÇO */ /* SENÃO */ /* Retorno a mensagem "Quantidade insuficiente" */ END
Eu sei que os SELECTS funcionam, pois testei, mas não sei como criar o algoritmo que eu escrevi.
Também gostaria de retornar uma mensagem de erro, mas não sei se é possível (como no caso “Quantidade insuficiente”)…
Agradeço por toda ajuda! Caso seja mais fácil, ao invés de codificarem para mim, aceito dicas sobre o que eu teria que usar (IF eu já consigo usar).