在我的存储过程中,我使用了2个insert语句。当我执行sp时 使用executenonquery(),它返回受2语句影响的行数。 假设查询1影响的行数为2,查询2影响的行数为3.它返回5.我想要最后查询的结果。这只是3。如何做?
答案 0 :(得分:2)
根据您的需要,您有两种选择。
首先,您可以在插入语句之间切换NOCOUNT
设置,以便忽略您不感兴趣的插入的计数:
ALTER PROCEDURE [dbo].[spFoo]
AS
BEGIN
set nocount on
insert into test values (1, 'a')
insert into test values (2, 'b')
set nocount off
insert into test values (3, 'c')
END
使用ExecuteNonQuery
调用时,返回1。
或者,您可以使用@@ROWCOUNT
获取受上一次插入影响的行数。您可以选择返回并使用ExecuteScalar
来获得C#中的结果:
ALTER PROCEDURE [dbo].[spFoo]
AS
BEGIN
insert into test values (1, 'a')
insert into test values (2, 'b')
insert into test values (3, 'c')
select @@ROWCOUNT
END
在这种情况下,您需要转换结果,因为ExecuteScalar
的返回值为object
:
int affected = (int)command.ExecuteScalar();