SQL Server ROWCOUNT() 函数使用指南

在 SQL Server 中,@@ROWCOUNT 是一个系统变量,用于返回最后一个执行的 Transact-SQL 语句所影响的行数。它可以在存储过程和触发器中使用,以及在客户端应用程序中。

语法

@@ROWCOUNT 不需要任何参数或参数列表。它返回一个整数值,表示最后一个 SQL 语句所影响的行数。

使用场景

@@ROWCOUNT 主要用于以下情况:

  • 在存储过程或触发器中获取最后一个 SQL 语句所影响的行数。
  • 在客户端应用程序中获取最后一个 SQL 语句所影响的行数。

示例

示例 1:在存储过程中使用 @@ROWCOUNT

假设我们有一个存储过程,用于更新名为 Customers 的表格中的数据。以下是该存储过程的示例代码:

CREATE PROCEDURE UpdateCustomer
   @FirstName nvarchar(50),
   @LastName nvarchar(50),
   @Email nvarchar(50),
   @CustomerId int
AS
BEGIN
   UPDATE Customers
   SET FirstName = @FirstName,
       LastName = @LastName,
       Email = @Email
   WHERE CustomerId = @CustomerId

   SELECT @@ROWCOUNT AS 'Rows Updated'
END

存储过程使用 UPDATE 语句更新 Customers 表格中的数据,并使用 SELECT 语句返回受影响的行数。在存储过程执行后,@@ROWCOUNT 返回的值将被打印到结果集中。

示例 2:在客户端应用程序中使用 @@ROWCOUNT

假设我们有一个 C# 应用程序,用于向名为 Customers 的表格中插入新数据。以下是该应用程序的示例代码:

using System.Data.SqlClient;

string connectionString = "Data Source=YourServer;Initial Catalog=YourDatabase;Integrated Security=True";
string insertQuery = "INSERT INTO Customers (FirstName, LastName, Email) VALUES ('John', 'Doe', '[email protected]')";

using (SqlConnection connection = new SqlConnection(connectionString))
{
   connection.Open();

   using (SqlCommand command = new SqlCommand(insertQuery, connection))
   {
      int rowsAffected = command.ExecuteNonQuery();

      Console.WriteLine("Rows inserted: " + rowsAffected);
      Console.WriteLine("Rows affected: " + command.Parameters["@rowsAffected"].Value);
   }
}

应用程序使用 INSERT 语句向 Customers 表格中插入新数据,并使用 ExecuteNonQuery() 方法执行该语句。在执行后,@@ROWCOUNT 返回的值可以通过检查 SqlCommand 对象的 Parameters 集合中的 @rowsAffected 参数来获得。

结论

@@ROWCOUNT 是一个非常有用的系统变量,可以在存储过程、触发器和客户端应用程序中使用,以获取最后一个 SQL 语句所影响的行数。