Essayez de renvoyer explicitement SQL%ROWCOUNT.
Selon MSDN, DbCommand..ExecuteNonQuery renverra toujours -1 pour les appels de procédure stockée :
Si je me souviens bien de l'époque où j'utilisais beaucoup de procédures stockées, je pense que vous auriez besoin d'utiliser un argument de sortie pour renvoyer des informations telles que le nombre de lignes mises à jour.