Как я могу получить количество удаленных записей?
У меня есть хранимая процедура, которая удаляет определенные записи. Мне нужно получить количество удаленных записей.
Я попытался сделать это вот так:
DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID
SELECT @@ROWCOUNT AS DELETED;
Но DELETED отображается как 0, хотя соответствующие записи удаляются. Я попробовал SET NOCOUNT OFF; безуспешно. Не могли бы вы помочь?
Спасибо.
Ответы
Ответ 1
Это должно работать нормально. Настройка NOCOUNT
не имеет значения.
Есть ли у вас какие-либо заявления между двумя, которые вы показали? @@ROWCOUNT
reset после каждого утверждения, поэтому вы должны немедленно получить значение без каких-либо промежуточных утверждений.
Ответ 2
Я использую этот фрагмент кода при отладке хранимых процедур для проверки счетчиков после операций, таких как удаление:
DECLARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT
Ответ 3
START TRANSACTION;
SELECT @before:=(SELECT count(*) FROM OperationsV1.dbo.Files);
DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID;
SELECT @after:=(SELECT count(*) FROM OperationsV1.dbo.Files);
COMMIT;
SELECT @[email protected] AS DELETED;
Я не знаю о SQL-сервере, но в MySQL SELECT count(*) FROM ...
- чрезвычайно дешевая операция.