Hay problemas difíciles de expresar con operadores relacionales, que podría ser candidatos para utilizar un cursor, pero este no es el caso.
Creo que falta que indiques una tabla más. Supongo que tienes una tabla en la cual guardas una relación de tragos vendidos. Usando JOINS y funciones de agregado, podemos obtener en un solo paso el total usado para cada bebida. Luego, se usa ese resultado para decrementar el stock en un solo update. Usando el cursor ocurrirían mútiples updates lo cual lo haría una opción ineficiente.
Lo que me confunde es esto:
Cita: cuando se VENDA un WHISKY CON COCA COLA se deben DESCONTAR del stock de BEBIDAS
Si lo necesitas actualizar cuando se vende el trago, ¿para que necesitas un cursor? Sigue siendo un sencillo update.
Algo como:
Código:
UPDATE BEBIDAS
SET cant_stock = cant_stock - c.proporcion
FROM BEBIDAS AS upd
INNER JOIN COMPOSICIONES AS c
ON upd.id_bebida = c.id_bebida
WHERE c.id_trago = ?
Donde simplemente debes pasar el id_trago de "WHISKY CON COCA COLA" y listo.