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

ExecuteScalar बनाम ExecuteNonQuery पहचान मान लौटाते समय

जैसा कि हारून द्वारा सुझाया गया है, एक संग्रहित प्रक्रिया इसे तेज कर देगी क्योंकि यह एसक्यूएल सर्वर को आपके एसक्यूएल बैच को संकलित करने का काम बचाता है। हालाँकि, आप अभी भी किसी भी दृष्टिकोण के साथ जा सकते हैं:ExecuteScalar या ExecuteNonQuery . आईएमएचओ, उनके बीच प्रदर्शन अंतर इतना छोटा है कि कोई भी विधि "उचित" है।

ऐसा कहने के बाद, मुझे ExecuteScalar . का उपयोग करने का मतलब नहीं दिख रहा है यदि आप आउटपुट पैरामीटर से पहचान मान प्राप्त कर रहे हैं। उस स्थिति में, ExecuteScalar . द्वारा लौटाया गया मान बेकार हो जाता है।

एक दृष्टिकोण जो मुझे पसंद है क्योंकि इसके लिए कम कोड की आवश्यकता होती है, ExecuteScalar . का उपयोग करता है आउटपुट पैरामीटर के बिना:

public static int SaveTest(Test newTest)
{
    var conn = DbConnect.Connection();
    const string sqlString = "INSERT INTO dbo.Tests ( Tester , Premise ) " +
                             "               VALUES ( @tester , @premise ) " +
                             "SELECT SCOPE_IDENTITY()";
    using (conn)
    {
        using (var cmd = new SqlCommand(sqlString, conn))
        {
            cmd.Parameters.AddWithValue("@tester", newTest.tester);
            cmd.Parameters.AddWithValue("@premise", newTest.premise);

            cmd.CommandType = CommandType.Text;
            conn.Open();
            return (int) (decimal) cmd.ExecuteScalar();

        }
    }
}

हैप्पी प्रोग्रामिंग!

संपादित करें :ध्यान दें कि हमें दो बार कास्ट करने की आवश्यकता है:ऑब्जेक्ट से decimal . तक , और फिर int . पर (इसे नोट करने के लिए टेकटर्टल को धन्यवाद)।




  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 सर्वर में IDENTITY_INSERT चालू या बंद पर सेट है या नहीं?

  2. डेटाबेस मेल प्रोफाइल अपडेट करें (SSMS)

  3. चर निर्दिष्ट करते समय सेट बनाम चयन करें?

  4. SQL सर्वर में char, nchar, varchar और nvarchar में क्या अंतर है?

  5. पैरामीटरयुक्त क्वेरी गैर-पैरामीटरयुक्त क्वेरी बनाम अत्यधिक धीमी क्वेरी योजना क्यों उत्पन्न करती है