Поделиться через


@@ROWCOUNT (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Возвращает число строк, затронутых при выполнении последней инструкции. Если число строк превышает 2 миллиарда, используйте инструкцию ROWCOUNT_BIG.

Соглашения о синтаксисе Transact-SQL

Синтаксис

@@ROWCOUNT

Типы возвращаемых данных

int

Замечания

Инструкции Transact-SQL могут задавать значение следующим @@ROWCOUNT образом:

  • Задайте @@ROWCOUNT количество затронутых строк или чтения. Строки могут отправляться клиенту или не отправляться.
  • Сохранение @@ROWCOUNT из предыдущего выполнения инструкции.
  • Сброс до @@ROWCOUNT 0, но не возвращайте клиенту значение.

Операторы, которые делают простое назначение, всегда задают @@ROWCOUNT значение 1. Строки не отправляются клиенту. Примерами этих инструкций являются: SET @local_variable, RETURN, READTEXTи выбор без инструкций запроса, таких как SELECT GETDATE() или SELECT '<Generic Text>'.

Операторы, которые делают назначение в запросе или используются RETURN в запросе, задают @@ROWCOUNT значение количества строк, затронутых или считываемых запросом, например: SELECT @local_variable = c1 FROM t1

Операторы языка обработки данных (DML) задают @@ROWCOUNT значение количества строк, затронутых запросом, и возвращают это значение клиенту. Инструкции DML могут не отправлять строки клиенту.

DECLARE CURSOR и FETCH задайте @@ROWCOUNT для параметра значение 1.

EXECUTE операторы сохраняют предыдущие @@ROWCOUNT.

Такие операторы, как USE, SET <option>, , PRINTDEALLOCATE CURSORCLOSE CURSOR, RAISERRORBEGIN TRANSACTIONили COMMIT TRANSACTION сброс ROWCOUNT значения 0в .

Скомпилированные в собственном коде хранимые процедуры сохраняют предыдущие @@ROWCOUNT. Инструкции Transact-SQL внутри скомпилированных в собственном коде хранимых процедур не задаются @@ROWCOUNT. Дополнительные сведения см. в статье Хранимые процедуры, скомпилированные в собственном коде.

Примеры

Следующий пример выполняет инструкцию UPDATE и использует @@ROWCOUNT для определения того, были ли изменены строки.

USE AdventureWorks2022;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO