Zkuste explicitně vrátit SQL%ROWCOUNT.
Podle MSDN DbCommand..ExecuteNonQuery vždy vrátí -1 pro volání uložených procedur:
Pokud si dobře pamatuji z doby, kdy jsem používal spoustu uložených procesů, domnívám se, že budete muset použít výstupní argument, abyste vrátili věci, jako je počet aktualizovaných řádků.