Hoặc bạn sử dụng ExecuteScalar như Andrew gợi ý - hoặc bạn sẽ phải thay đổi mã của bạn một chút:
CREATE PROCEDURE dbo.CountRowsInTable(@RowCount INT OUTPUT)
AS BEGIN
SELECT
@RowCount = COUNT(*)
FROM
SomeTable
END
và sau đó sử dụng cuộc gọi ADO.NET này để lấy giá trị:
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: nhưng trong ví dụ cụ thể này, tôi đoán phương án thay thế chỉ thực hiện ExecuteScalar
đơn giản và dễ hiểu hơn. Phương pháp này có thể hoạt động OK, nếu bạn cần trả về nhiều hơn một giá trị đơn lẻ (ví dụ: đếm từ một vài bảng hoặc như vậy).
Nguồn
2009-06-25 13:33:12
Cảm ơn @Marc, tôi đã thử nghiệm giải pháp của bạn hoạt động! Mát mẻ! – George2