Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Nilai Pemulangan Prosedur Tersimpan dalam C#?
Apabila memanggil prosedur tersimpan yang mengembalikan nilai dalam C#, adalah penting untuk mengendalikan nilai pulangan dalam kod dengan betul. Artikel ini menerangkan masalah ini dan menyediakan penyelesaian untuk berjaya mendapatkan kembali nilai daripada prosedur yang disimpan.
Aplikasi C# perlu memanggil prosedur tersimpan yang mengembalikan nilai seterusnya dalam urutan. Walaupun mengikut penyelesaian dalam talian, saya masih tidak dapat mendapatkan nilai pulangan. Coretan kod yang disediakan termasuk mencipta objek SqlCommand, menentukan prosedur tersimpan sebagai teks arahan dan menggunakan SqlConnection untuk melaksanakan arahan. Walau bagaimanapun, nilai pulangan prosedur yang disimpan tidak diperolehi.
<code class="language-sql">ALTER procedure [dbo].[usp_GetNewSeqVal] @SeqName nvarchar(255) as begin declare @NewSeqVal int set NOCOUNT ON update AllSequences set @NewSeqVal = CurrVal = CurrVal+Incr where SeqName = @SeqName if @@rowcount = 0 begin print 'Sequence does not exist' return end return @NewSeqVal end</code>
<code class="language-csharp">SqlConnection conn = new SqlConnection(getConnectionString()); conn.Open(); SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter(); param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar); param.Direction = ParameterDirection.Input; param.Value = "SeqName"; SqlDataReader reader = cmd.ExecuteReader();</code>
Untuk mendapatkan nilai pulangan prosedur yang disimpan, anda perlu menambah parameter dengan arah ReturnValue pada objek SqlCommand. Ini mengarahkan arahan untuk mengisytiharkan pembolehubah dan memberikan nilai pulangan prosedur yang disimpan kepadanya. Kod berikut menunjukkan penyelesaian:
<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"); // @ReturnVal 可以是任何名称 var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; conn.Open(); cmd.ExecuteNonQuery(); var result = returnParameter.Value; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Pemulangan Prosedur Tersimpan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!