SQL Server & C # procédure stockée et split par zéro exception

Donc d'abord voici mon code C # et puis vient la procédure stockée.

public DataTable GetCourseHighPass(Ssortingng tmpCourse) { command.Connection = OpenConnection(); try { command.CommandText = "exec GetCourseCompletions @tmpCourse = '" + tmpCourse + "'"; SqlDataAdapter dataAdapter = new SqlDataAdapter(command); dataAdapter.Fill(dataTable); return dataTable; } catch (Exception) { throw new Exception("There are no VG's for this course."); } finally { command.Connection.Close(); } } 

Et voici ma procédure stockée.

 create procedure GetCourseCompletions @tmpCourse nvarchar(30) as select (count(pnr) * 100 / (select count(pnr) from HasStudied where courseCode = @tmpCourse and count(pnr) =)) as VGPrecentage from HasStudied where grade >= 5 and courseCode = @tmpCourse go 

Le problème est que s'il n'y a pas d'étudiant avec un high-pass, j'obtiendrai une division par zéro exception. Vous searchz des suggestions sur la façon d'intercepter cette exception afin que le programme ne plante pas ou même mieux pour réécrire la procédure stockée de sorte qu'il n'y ait pas d'exception en premier lieu.

Merci pour votre aide!

Fais ce que Eric a dit:

     DECLARE @count int
     Définissez @count = (select count (pnr) depuis HasStudied où courseCode = @tmpCourse et count (pnr) = ...)
     IF @count = 0
     COMMENCER
         SELECT 0 en tant que VGPrecentage
     FIN
     AUTRE
     COMMENCER
         select (count (pnr) * 100 / @count) en tant que VGPrecentage from HasStudied où grade> = 5 et courseCode = @tmpCourse
     FIN 

Je vous suggère d'utiliser ce type de requête à la place de la vôtre pour gérer les valeurs NULL et les valeurs Zéro :

 SELECT CASE WHEN part * total <> 0 THEN part * 100 / total ELSE 0 END FROM ( SELECT SUM(CASE WHEN grade > 5 THEN 1.00 ELSE 0.00 END) As part, SUM(1.00) as total FROM HasStudied WHERE courseCode = @tmpCourse) t