Dapatkan nilai pulangan prosedur tersimpan dalam C#
Artikel ini menerangkan cara memanggil prosedur tersimpan daripada aplikasi C# Windows dan mendapatkan nilai pulangannya. Prosedur tersimpan usp_GetNewSeqVal
digunakan untuk menjana nilai jujukan baharu. Walaupun merujuk kepada beberapa penyelesaian di Internet, anda masih tidak berjaya memperoleh nilai pulangan.
Masalahnya ialah parameter arah ReturnValue
tiada daripada arahan. Untuk membetulkannya, anda perlu menambah parameter berikut:
<code class="language-csharp">var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue;</code>
Tetapkan arah parameter kepada ParameterDirection.ReturnValue
mengarahkan SqlCommand
untuk mengisytiharkannya sebagai pembolehubah dan tetapkan nilai pulangan prosedur tersimpan kepadanya. Ini serupa dengan sintaks yang digunakan dalam SQL (exec @ReturnValue = spMyProcedure...
).
Dengan menambahkan parameter ini, panggilan cmd.ExecuteReader()
akan melaksanakan prosedur yang disimpan dan menyimpan nilai pulangan dalam returnParameter
. Anda kemudian boleh mengaksesnya sebagai returnParameter.Value
.
Berikut ialah kod dengan pengubahsuaian yang diperlukan:
<code class="language-csharp">using (SqlConnection conn = new SqlConnection(getConnectionString())) using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = parameterStatement.getQuery(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("SeqName", "SeqNameValue"); var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; conn.Open(); cmd.ExecuteNonQuery(); var result = returnParameter.Value; }</code>
Dengan membuat perubahan ini, anda akan berjaya mendapatkan nilai pulangan prosedur yang disimpan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Pulangan Prosedur Tersimpan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!