Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सी # में SQL सर्वर संग्रहीत प्रक्रिया आउटपुट पैरामीटर तक पहुंचना

मेरा सुझाव है कि आप अपना 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. SQL सर्वर में डेटाटाइम सम्मिलित करने के लिए Sql क्वेरी

  3. SQL सर्वर में केस स्टेटमेंट में सेट का उपयोग करें

  4. SUSE पर sqlcmd और bcp कैसे स्थापित करें?

  5. SQL सर्वर परिकलित स्तंभ किसी अन्य तालिका से चयन करें