এসকিউএল স্টেটমেন্টগুলির সাথে মোড়ানো হওয়ার কারণটি sp_executesql
হ'ল SqlCommand.Commandtype
সম্পত্তি সেট করা এবং কোনও প্যারামিটার কমান্ডে প্রেরণ করা।
SqlCommand cmd = new SqlCommand("proc1", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param1", 1);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
উপরের কোডটি এই টি-এসকিউএল দিয়ে শেষ হবে:
exec proc1 @param1=1
SqlCommand cmd = new SqlCommand("proc1", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@param1", 1);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
এই কোডটি নিম্নলিখিত টি-এসকিউএল কার্যকর করে শেষ হবে:
exec sp_executesql N'proc1',N'@param1 int',@param1=1
23.12.15 সংযোজন: একটি CommandType.Text
কমান্ড ব্যবহার করে ফলাফলগুলি একই রকম হয়: শীঘ্রই কমান্ড অবজেক্টে একটি প্যারামিটার যুক্ত করা হয়, .NET পুরো ক্যোয়ারীটিকে আবদ্ধsp_executesql
করে এতে প্যারামিটারগুলি পাস করবে।
সংযোজন: গভীরতর ডাইভিংয়ের পরে sp_executesql
, পরামিতিগুলি শুকিয়ে যাওয়া এবং .NET ক্লাসগুলির এই আচরণটি ক্যাশে করার পরিকল্পনাটি উচ্চ ঘন ঘন ক্যোয়ারী সংকলন এবং পরিকল্পনার সংখ্যা এড়াতে পুরোপুরি অর্থে আসে। সুতরাং এটি মূলত সাধারণভাবে আরও ভাল এসকিউএল সার্ভারের পারফরম্যান্স নিশ্চিত করার জন্য তৈরি করা হয়েছে যখন এটি একই সাথে কিছু প্রশ্নের (প্যারামিটার স্নিফিং ইস্যু) দুর্বল পারফরম্যান্সের কারণ হতে পারে যা প্রাথমিকভাবে তৈরি ক্যোয়ারী পরিকল্পনার চেয়ে বিভিন্ন পরামিতি মানগুলির সাথে ব্যবহৃত হয়।
দেখা:
উপরের নমুনাটি .NET ফ্রেমওয়ার্ক 4.5 এবং এসকিউএল সার্ভার 2008 বিকাশকারী সংস্করণ ব্যবহার করে তৈরি করা হয়েছিল।