Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Nilai Pemulangan Prosedur Tersimpan dalam C#?

Bagaimana untuk Mendapatkan Nilai Pemulangan Prosedur Tersimpan dalam C#?

Susan Sarandon
Susan Sarandonasal
2025-01-20 01:32:08752semak imbas

How to Retrieve Stored Procedure Return Values in C#?

Dapatkan nilai pulangan 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.

Pernyataan Masalah

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.

Kod prosedur kedai

<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>

Kod C# untuk memanggil prosedur tersimpan

<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>

Penyelesaian

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn