Опитайте изрично да върнете SQL%ROWCOUNT.
Според MSDN DbCommand..ExecuteNonQuery винаги ще връща -1 за извиквания на съхранена процедура:
Ако си спомням правилно от моите дни на използване на много съхранени процедури, вярвам, че ще трябва да използвате изходен аргумент, за да върнете неща като броя на актуализираните редове.