gpt4 book ai didi

sql - 如何从存储过程 (ADO.NET) 中检索标量值

转载 作者:行者123 更新时间:2023-12-04 10:22:24 24 4
gpt4 key购买 nike

如果在存储过程中,我只执行一条语句,select count(*) from sometable ,然后从客户端(我使用 C# ADO.Net SqlCommand 来调用存储过程),我如何检索 count(*)值(value)?我正在使用 SQL Server 2008。

我很困惑,因为 count(*)不用作存储过程的返回值参数。

提前致谢,
乔治

最佳答案

您要么按照安德鲁的建议使用 ExecuteScalar - 要么您必须稍微更改代码:

CREATE PROCEDURE dbo.CountRowsInTable(@RowCount INT OUTPUT)
AS BEGIN
SELECT
@RowCount = COUNT(*)
FROM
SomeTable
END

然后使用此 ADO.NET 调用来检索值:
using(SqlCommand cmdGetCount = new SqlCommand("dbo.CountRowsInTable", sqlConnection))
{
cmdGetCount.CommandType = CommandType.StoredProcedure;

cmdGetCount.Parameters.Add("@RowCount", SqlDbType.Int).Direction = ParameterDirection.Output;

sqlConnection.Open();

cmdGetCount.ExecuteNonQuery();

int rowCount = Convert.ToInt32(cmdGetCount.Parameters["@RowCount"].Value);

sqlConnection.Close();
}

马克

PS:但在这个具体的例子中,我猜只是执行 ExecuteScalar 的替代方案更简单,更容易理解。如果您需要返回多个值(例如来自多个表的计数等),此方法可能会正常工作。

关于sql - 如何从存储过程 (ADO.NET) 中检索标量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com