![](/img/trans.png)
[英]How do I check if a column have more than two items and if it have than do the avg() on it in SQL?
[英]Do I have to include “SELECT @@RowCount” if I have more than one SQL statement?
我知道,如果执行一条执行UPDATE或DELETEs数据的SQL语句,它将返回受影响的行数。
但是,如果我在一个sql脚本中有多个SQL语句,并且我想知道最后执行的语句影响的行数,它是否仍会自动返回该行,或者我是否需要
SELECT @@RowCount
在脚本末尾?
有问题的代码不是存储过程。 相反,它是一个存储在任意位置的参数化SQL脚本,使用Entity Framework中的ExecuteStoreCommand
函数执行,如下所示:
var numberOfRowsAffected = context.ExecuteStoreCommand<int>(mySqlScript, parameters);
这取决于执行查询时的NOCOUNT
设置。
如果NOCOUNT
为ON
则不会返回DONE_IN_PROC
消息。
如果NOCOUNT
为OFF
, DONE_IN_PROC
默认设置,然后将返回DONE_IN_PROC
消息(例如计数)。
这两种情况都与执行不同,
SELECT @@ROWCOUNT;
它将返回具有单个标量值的结果集,该结果集不同于DONE_IN_PROC消息。 无论NOCOUNT
的设置如何,都会发生这种情况。
我相信SELECT @@ROWCOUNT
有时用于使实体框架与更复杂的TSQL语句一起“播放”,因为EF都需要
DONE_IN_PROC
消息。 SELECT @@ROWCOUNT;
很重要SELECT @@ROWCOUNT;
在最后一条查询语句之后立即执行,因为许多语句将重置@@ROWCOUNT
,因此会产生意外结果。
仅在回答部分上是特定的,您将需要添加SELECT @@ RowCount以返回受last语句影响的行数。
我认为混乱可能是由于执行查询时在SSMS窗口中返回的行造成的。默认情况下,SSMS显示所有sql语句返回的行数,但它将受影响的行作为消息而不是数据集返回。
@@ ROWCOUNT将自动返回最后一条语句影响的行数。
请在此处找到msdn链接https://msdn.microsoft.com/en-us/library/ms187316.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.