Если вы используете метод System.Data.SqlClient.SqlCommand.ExecuteNonQuery
или System.Data.Common.DbCommand.ExecuteNonQuery
, тогда возвращаемое значение должно быть числом строк, затронутых вашим оператором (я думаю, последним оператором в вашей команде).
Это предостережение ... если вы выполняете пакетную или хранимую процедуру, которая выполняет SET NOCOUNT ON
, то количество строк, затронутых каждым оператором, не сообщается, а ExecuteNonQuery возвращает -1.
в T-SQL есть переменная @@rowcount
, к которой вы можете обратиться, чтобы получить количество строк, затронутых последним оператором.Очевидно, вам нужно было бы получить это сразу после вашего оператора DELETE, но я полагаю, что вы могли бы сделать return @@rowcount
в вашем T-SQL, если вы используете SET NOCOUNT ON
.
Альтернативой будет возвращать значение какпараметр OUTPUT, особенно если у вас есть пакет из нескольких операторов, и вы хотите знать, на сколько строк влияет каждая.Некоторым людям нравится использовать оператор T-SQL RETURN, чтобы сообщить об успехе / неудаче, поэтому вы можете не возвращать «количество затронутых строк» для согласованности.