如何获得受存储过程影响的记录数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

对于INSERTUPDATEDELETESQL直接对数据库执行的语句,大多数数据库返回受影响的行数。对于存储过程,受影响的记录数始终存在-1

我们如何获得受存储过程影响的记录数?

提问于
用户回答回答于

为存储过程注册一个out参数,如果使用SQL Server,则根据@@ ROWCOUNT设置值。如果你使用的是Oracle,请使用SQL%ROWCOUNT。

请注意,如果你有多个INSERT / UPDATE / DELETE,则需要一个变量来存储@@ ROWCOUNT对每个操作的结果。

用户回答回答于

@@RowCount 会给你受SQL语句影响的记录数。

SELECT @NumRowsChanged = @@ROWCOUNT, @ErrorCode = @@ERROR

如果你有多个语句,则必须捕获每个语句受影响的行数并添加它们。

SELECT @NumRowsChanged = @NumRowsChanged  + @@ROWCOUNT, @ErrorCode = @@ERROR

扫码关注云+社区