অন্যান্য প্রতিক্রিয়া শো এই, কিন্তু মূলত আপনি শুধুমাত্র একটি তৈরি করতে হবে 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
ব্লকের ভিতরে এটির দরকার নেই