Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Достъп до изходния параметър на съхранена процедура на SQL Server в C#

Предлагам ви да поставите своя SqlConnection и SqlCommand в използването на блокове, така че да се гарантира правилното им изхвърляне.

Освен това, ако не греша, изходните параметри са достъпни само след като сте прочели напълно резултантния набор от данни, който се връща.

Тъй като изглежда, че изобщо не се нуждаете от това - защо просто не използвате .ExecuteNonQuery() вместо? Това решава ли проблема?

using (SqlConnection con = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True"))
using (SqlCommand cmd = new SqlCommand("dbo.GetRowCount", con))
{
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add(new SqlParameter("@count", SqlDbType.Int));
    cmd.Parameters["@count"].Direction = ParameterDirection.Output;

    con.Open();
    cmd.ExecuteNonQuery();  // *** since you don't need the returned data - just call ExecuteNonQuery
    int ans = (int)cmd.Parameters["@count"].Value;
    con.Close();

    Console.WriteLine(ans);
}

Също така:тъй като изглежда, че наистина се интересувате само от броя на редовете - защо не опростите съхранената си процедура до нещо подобно:

ALTER PROCEDURE GetRowCount
AS
   SELECT COUNT(*) FROM Emp WHERE age > 30;

и след това използвайте този фрагмент във вашия C# код:

    con.Open();

    object result = cmd.ExecuteScalar();

    if(result != null)
    {
        int ans = Convert.ToInt32(result);
    }

    con.Close();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разбиране на облачно базирано наблюдение на производителността на SQL сървър

  2. Свързване на UWP приложение към доставчик на отдалечен SQL Server 2008:TCP доставчик, грешка:0

  3. Разделете дял на две в SQL Server (T-SQL)

  4. Най-добрият начин да получите PK Guid за вмъкнат ред

  5. Не може да се свърже с AWS EC2 от визуално студио (или където и да е всъщност)