অন্যান্য প্রতিক্রিয়া শো এই, কিন্তু মূলত আপনি শুধুমাত্র একটি তৈরি করতে হবে SqlParameter, সেট Directionকরতে Output, এবং এটি যোগ SqlCommand'র Parametersসংগ্রহ। তারপরে সঞ্চিত পদ্ধতিটি কার্যকর করুন এবং প্যারামিটারটির মান পাবেন।
আপনার কোড নমুনা ব্যবহার:
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand("sproc", conn))
{
SqlParameter outputIdParam = new SqlParameter("@ID", SqlDbType.Int)
{
Direction = ParameterDirection.Output
};
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(outputIdParam);
conn.Open();
cmd.ExecuteNonQuery();
int idFromString = int.Parse(outputIdParam.Value.ToString());
int idFromCast = (int)outputIdParam.Value;
int? idAsNullableInt = outputIdParam.Value as int?;
int idOrDefaultValue = outputIdParam.Value as int? ?? default(int);
conn.Close();
}
পাওয়ার সময় সতর্কতা অবলম্বন করুন Parameters[].Value, যেহেতু টাইপটি objectআপনি যেটি হিসাবে ঘোষণা করছেন তা থেকে ফেলে দেওয়া দরকার। এবং SqlDbTypeযখন আপনি প্রয়োজনীয়তা তৈরি করবেন SqlParameterতখন ডাটাবেজে টাইপের সাথে মিল রাখতে হবে। আপনি যদি এটি কনসোলে কেবল আউটপুট করতে চলেছেন তবে আপনি কেবল ব্যবহার করছেন Parameters["@Param"].Value.ToString()(হয় স্পষ্ট করে বা স্পষ্টভাবে একটি Console.Write()বা String.Format()কলের মাধ্যমে )।
সম্পাদনা: 3.5 বছরেরও বেশি সময় এবং প্রায় 20k দর্শন এবং কেউই এটি উল্লেখ করতে বিরক্ত করেনি যে এটি মূল পোস্টে আমার "সাবধানতা অবলম্বন করুন" মন্তব্যে উল্লিখিত কারণে সংকলন করে নি। ভাল লাগল @ ওয়াল্টার স্টাবোস এবং @ স্টিফেন কেনেডি থেকে নেওয়া ভাল মন্তব্যের ভিত্তিতে এবং @abatishchev থেকে প্রশ্নের আপডেট কোড সম্পাদনের সাথে মিল রেখে এটি ঠিক করা হয়েছে।
conn.Close()কোনওusingব্লকের ভিতরে এটির দরকার নেই