使用c#如何获取存储过程输出的行数?我正在尝试没有循环的东西,而不在数据库中使用COUNT(*)。基本上是这样的:
db.Query("storedProcedure").count()
答案 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