如果我有多个 SQL 语句,是否必须包含 "SELECT @@RowCount"?
Do I have to include "SELECT @@RowCount" if I have more than one SQL statement?
我知道,如果我执行单个 SQL 更新或删除某些数据的语句,它将 return 受影响的行数。
但是如果我在 sql 脚本中有多个 SQL 语句,并且我想知道 从最后执行的语句中受影响的行数, 它仍然会 return 自动,还是我需要一个
SELECT @@RowCount
在脚本结尾?
有问题的代码不是存储过程。相反,它是存储在任意位置的参数化 SQL 脚本,使用 Entity Framework 中的 ExecuteStoreCommand
函数执行,如:
var numberOfRowsAffected = context.ExecuteStoreCommand<int>(mySqlScript, parameters);
@@ROWCOUNT 将自动 return 受最后一条语句影响的行数。
请在此处找到 msdn link
https://msdn.microsoft.com/en-us/library/ms187316.aspx
只是为了具体回答部分,您需要将 SELECT @@RowCount 添加到 return 受最后一条语句影响的行数。
我认为混淆可能是由于在执行 query.By 时在 SSMS window 中编辑了 return 行 query.By 默认 SSMS 显示所有 [=19] 的行数 return =] 语句,但它 return 影响行,因为消息不是 数据集 。
这取决于执行你的 quer(y/ies) 时的 NOCOUNT
设置。
如果 NOCOUNT
是 ON
,则 DONE_IN_PROC
条消息将不会被 return 编辑。
如果 NOCOUNT
是默认设置 OFF
,则 DONE_IN_PROC
条消息将被 return 编辑(例如计数)。
这两种情况与执行不同,
SELECT @@ROWCOUNT;
这将 return 具有单个标量值的结果集,不同于 DONE_IN_PROC 消息。无论 NOCOUNT
.
的设置如何,都会发生这种情况
我相信 SELECT @@ROWCOUNT
有时用于使 Entity Framework "play" 具有更复杂的 TSQL 语句,因为 EF 都需要
- 需要计数以进行 post 验证
- 并将接受标量数字结果集作为
DONE_IN_PROC
消息的替代。
在最后一个查询语句之后立即执行 SELECT @@ROWCOUNT;
很重要,因为许多语句会重置 @@ROWCOUNT
并因此产生意外结果。
我知道,如果我执行单个 SQL 更新或删除某些数据的语句,它将 return 受影响的行数。
但是如果我在 sql 脚本中有多个 SQL 语句,并且我想知道 从最后执行的语句中受影响的行数, 它仍然会 return 自动,还是我需要一个
SELECT @@RowCount
在脚本结尾?
有问题的代码不是存储过程。相反,它是存储在任意位置的参数化 SQL 脚本,使用 Entity Framework 中的 ExecuteStoreCommand
函数执行,如:
var numberOfRowsAffected = context.ExecuteStoreCommand<int>(mySqlScript, parameters);
@@ROWCOUNT 将自动 return 受最后一条语句影响的行数。
请在此处找到 msdn link https://msdn.microsoft.com/en-us/library/ms187316.aspx
只是为了具体回答部分,您需要将 SELECT @@RowCount 添加到 return 受最后一条语句影响的行数。
我认为混淆可能是由于在执行 query.By 时在 SSMS window 中编辑了 return 行 query.By 默认 SSMS 显示所有 [=19] 的行数 return =] 语句,但它 return 影响行,因为消息不是 数据集 。
这取决于执行你的 quer(y/ies) 时的 NOCOUNT
设置。
如果 NOCOUNT
是 ON
,则 DONE_IN_PROC
条消息将不会被 return 编辑。
如果 NOCOUNT
是默认设置 OFF
,则 DONE_IN_PROC
条消息将被 return 编辑(例如计数)。
这两种情况与执行不同,
SELECT @@ROWCOUNT;
这将 return 具有单个标量值的结果集,不同于 DONE_IN_PROC 消息。无论 NOCOUNT
.
我相信 SELECT @@ROWCOUNT
有时用于使 Entity Framework "play" 具有更复杂的 TSQL 语句,因为 EF 都需要
- 需要计数以进行 post 验证
- 并将接受标量数字结果集作为
DONE_IN_PROC
消息的替代。
在最后一个查询语句之后立即执行 SELECT @@ROWCOUNT;
很重要,因为许多语句会重置 @@ROWCOUNT
并因此产生意外结果。