@@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>
, , PRINT
DEALLOCATE CURSOR
CLOSE CURSOR
, RAISERROR
BEGIN 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