Coba kembalikan SQL%ROWCOUNT secara eksplisit.
Menurut MSDN, DbCommand..ExecuteNonQuery akan selalu mengembalikan -1 untuk panggilan prosedur tersimpan:
Jika saya ingat dengan benar dari hari-hari saya menggunakan banyak procs yang tersimpan, saya yakin Anda perlu menggunakan argumen output untuk mengembalikan hal-hal seperti jumlah baris yang diperbarui.