Entweder Sie verwenden ExecuteScalar als Andrew vorgeschlagen - oder Sie Ihren Code ein wenig ändern müssen:
CREATE PROCEDURE dbo.CountRowsInTable(@RowCount INT OUTPUT)
AS BEGIN
SELECT
@RowCount = COUNT(*)
FROM
SomeTable
END
und dann diese ADO.NET Anruf, um den Wert abzurufen:
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();
}
Marc
PS: aber in diesem konkreten Beispiel, ich denke, die Alternative mit nur Ausführen ExecuteScalar
ist einfacher und einfacher zu verstehen. Diese Methode funktioniert möglicherweise OK, wenn Sie mehr als einen einzelnen Wert (z. B. aus mehreren Tabellen oder dergleichen) zurückgeben müssen.
Dank @Marc, ich habe Ihre Lösung getestet funktioniert! Cool! – George2