获取没有循环的存储过程的行数

时间:2014-02-08 11:15:56

标签: c# razor

使用c#如何获取存储过程输出的行数?我正在尝试没有循环的东西,而不在数据库中使用COUNT(*)。基本上是这样的:

db.Query("storedProcedure").count()

2 个答案:

答案 0 :(得分:1)

如果您将数据提取到DataSet,则可以执行以下操作:

ds.Tables[0].Rows.Count

http://msdn.microsoft.com/en-us/library/system.data.datatable.rows(v=vs.110).aspx

.Tables[0]表示查询返回的第一组结果(如果您的存储过程中碰巧有多个SELECT语句)。否则,它只是指您唯一的SELECT

的结果

答案 1 :(得分:0)

您可以修改存储过程以输出行总数及其常用输出(Microsoft SQL服务器语法)

create proc dbo.My_Test
  @rows int out
as

-- preparing test data - ignore that
declare @tmp table(id int)
insert into @tmp values(1)
insert into @tmp values(2)

select * from @tmp

select @rows = @@rowcount

如果你的存储过程已经存在且它没有“玩”set nocount on“;你可以检索如下的计数:

create proc dbo.My_Test
as
-- preparing test data - ignore that
declare @tmp table(id int)
insert into @tmp values(1)
insert into @tmp values(2)

select * from @tmp

并调用sp:

declare @rows int
exec dbo.My_Test
select @rows = @@rowcount
-- @rows = 2