Procedure SQL Server com laços, selects, ifs e mensagem de resposta

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).