@@ROWCOUNT (Transact-SQL)@@ROWCOUNT (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Возвращает число строк, затронутых при выполнении последней инструкции.Returns the number of rows affected by the last statement. Если число строк превышает 2 миллиарда, используйте инструкцию ROWCOUNT_BIG.If the number of rows is more than 2 billion, use ROWCOUNT_BIG.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

@@ROWCOUNT  

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

intint

RemarksRemarks

Инструкции Transact-SQLTransact-SQL могут устанавливать значение в @@ROWCOUNT указанными ниже способами.Transact-SQLTransact-SQL statements can set the value in @@ROWCOUNT in the following ways:

  • Установка значения @@ROWCOUNT в число считанных или измененных строк.Set @@ROWCOUNT to the number of rows affected or read. Строки могут быть отосланы или не отосланы клиенту.Rows may or may not be sent to the client.

  • Сохранение значения @@ROWCOUNT из предыдущего выполнения инструкции.Preserve @@ROWCOUNT from the previous statement execution.

  • Сброс значения @@ROWCOUNT в 0 без возврата значения клиенту.Reset @@ROWCOUNT to 0 but do not return the value to the client.

Инструкции, которые выполняют простые присваивания, всегда устанавливают значение @@ROWCOUNT равным 1.Statements that make a simple assignment always set the @@ROWCOUNT value to 1. Строки не отправляются клиенту.No rows are sent to the client. Примерами таких инструкций являются SET @local_variable, RETURN, READTEXT и инструкции SELECT без запроса, такие как SELECT GETDATE() или SELECT 'Generic Text' .Examples of these statements are: SET @local_variable, RETURN, READTEXT, and select without query statements such as SELECT GETDATE() or SELECT 'Generic Text'.

Инструкции, которые осуществляют присвоение в запросе или используют RETURN, устанавливают значение @@ROWCOUNT равным числу строк, задействованных или считанных запросом, например SELECT @local_variable = c1 FROM t1.Statements that make an assignment in a query or use RETURN in a query set the @@ROWCOUNT value to the number of rows affected or read by the query, for example: SELECT @local_variable = c1 FROM t1.

Инструкции языка обработки данных DML задают значение @@ROWCOUNT равным числу строк, задействованных в запросе, и возвращают это значение клиенту.Data manipulation language (DML) statements set the @@ROWCOUNT value to the number of rows affected by the query and return that value to the client. DML-инструкции могут не отправлять строки клиенту.The DML statements may not send any rows to the client.

Инструкции DECLARE CURSOR и FETCH задают значение @@ROWCOUNT равным 1.DECLARE CURSOR and FETCH set the @@ROWCOUNT value to 1.

Инструкции EXECUTE сохраняют предыдущее значение @@ROWCOUNT.EXECUTE statements preserve the previous @@ROWCOUNT.

Такие инструкции, как USE, SET <параметр>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION или COMMIT TRANSACTION, сбрасывают значение ROWCOUNT в 0.Statements such as USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION, or COMMIT TRANSACTION reset the ROWCOUNT value to 0.

Скомпилированные в собственном коде хранимые процедуры сохраняют предыдущее значение @@ROWCOUNT.Natively compiled stored procedures preserve the previous @@ROWCOUNT. Инструкции Transact-SQLTransact-SQL, находящиеся внутри скомпилированных в собственном коде хранимых процедур, не устанавливают значение @@ROWCOUNT.Transact-SQLTransact-SQL statements inside natively compiled stored procedures do not set @@ROWCOUNT. Дополнительные сведения см. в статье Хранимые процедуры, скомпилированные в собственном коде.For more information, see Natively Compiled Stored Procedures.

ПримерыExamples

Следующий пример выполняет инструкцию UPDATE и использует @@ROWCOUNT для определения того, были ли изменены строки.The following example executes an UPDATE statement and uses @@ROWCOUNT to detect if any rows were changed.

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

См. также:See Also

Системные функции (Transact-SQL) System Functions (Transact-SQL)
SET ROWCOUNT (Transact-SQL)SET ROWCOUNT (Transact-SQL)