Подтвердить что ты не робот

Как я могу получить количество удаленных записей?

У меня есть хранимая процедура, которая удаляет определенные записи. Мне нужно получить количество удаленных записей.

Я попытался сделать это вот так:

DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID   
SELECT @@ROWCOUNT AS DELETED;            

Но DELETED отображается как 0, хотя соответствующие записи удаляются. Я попробовал SET NOCOUNT OFF; безуспешно. Не могли бы вы помочь? Спасибо.

4b9b3361

Ответ 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 ... - чрезвычайно дешевая операция.