Spróbuj jawnie zwrócić SQL%ROWCOUNT.
Zgodnie z MSDN, DbCommand..ExecuteNonQuery zawsze zwróci -1 dla wywołań procedur składowanych:
Jeśli dobrze pamiętam z moich dni używania wielu przechowywanych procesów, uważam, że musiałbyś użyć argumentu wyjściowego, aby zwrócić rzeczy takie jak liczba zaktualizowanych wierszy.