Si le pasas el precio de la asignatura como argumento, tendrías que pasarle tantos precios como asignaturas tenga.
Supongo que tendrás un Tabla de estudiantes, otra de asignaturas, en la que incluyes el precio de la asinatura, y otra con Alumno_Asignatura, para saber que alumnos se han matriculado en qué asignaturas..., yo añadiría otra más Descuentos, y así te evitas programar los descuentos por el número de asignaturas, sólo tendrías, el número de asignaturas y el descuento aplicado
Para calcular el precio con un procedimiento almacenado, pasa el nombre o número de empleado, lo que tengas... haces una primera select para saber el número de asignaturas en las que está matriculado, obtienes en otra select las asignaturas y el precio de cada una de ellas, y sumas, en una tercera, obtienes el descuento de la tabla descuentos, si no, tendrás que hacer un if dentro del procedimiento, y lo aplicas.
O Todo con una cojoselect
SELECT PrecioGral.ImporteaPagarTotal * Descuentos.DescuentoaAplicar as ImporteAPagar FROM
(SELECT Sum(PrecioAsignatura) ImporteaPagarTotal, Count(1) AS NumeroAsignaturas
FROM AlumnosAsinaturas AS INNER JOIN Asignaturas A ON AS.IdAsignatura = A.IdAsignatura
WHERE AS.IdEmpleado = @NumeroEmpleado) PrecioGral INNER JOIN Descuentos ON PrecioGral.NumeroAsignaturas = Descuentos.NumeroAsignaturas
Bueno... espero que te sirva de algo
Un saludo