What problem are you encountering? Are you getting an exception? If you debug through the code are you getting rows from the first procedure etc...
Another way you could do this is to execute the whole thing in a single statement using a statement like:
INSERT INTO GymMemberTrainingProgram(
GymMemberID,
ExerciseID,
TrainingProgramID,
DayNumber)
SELECT DISTINCT
@GymMemberID,
TrainingProgramExercise.ExerciseID,
TrainingProgramExercise.TrainingProgramID,
TrainingProgramExercise.DayNumber
FROM Exercise
INNER JOIN TrainingProgramExercise
ON Exercise.ExerciseID = TrainingProgramExercise.ExerciseID
WHERE TrainingProgramExercise.DayNumber = @dayNum
AND TrainingProgramExercise.TrainingProgramID = 1
If you set up the parameters correctly and execute the above statement you shouldn't need to loop through all the records at client side, which would be much more efficient.