首頁 > 後端開發 > C++ > 如何在 C# 中檢索預存程序的回傳值?

如何在 C# 中檢索預存程序的回傳值?

Susan Sarandon
發布: 2025-01-20 01:32:08
原創
790 人瀏覽過

How to Retrieve Stored Procedure Return Values in C#?

在C#中檢索預存程序回傳值

在C#中呼叫傳回值的預存程序時,正確處理程式碼中的回傳值至關重要。本文介紹了這個問題,並提供了一個成功從預存程序檢索傳回值的解決方案。

問題陳述

一個C#應用程式需要呼叫一個傳回序列中下一個值的預存程序。儘管遵循了網路上的解決方案,但仍然無法檢索回傳值。提供的程式碼片段包括建立SqlCommand對象,將預存程序指定為命令文本,並使用SqlConnection執行命令。但是,預存程序的回傳值並沒有被取得。

預存程序代碼

<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>
登入後複製

呼叫預存程序的C#程式碼

<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>
登入後複製

解決方案

要取得預存程序的回傳值,需要在SqlCommand物件新增一個具有ReturnValue方向的參數。這指示命令聲明一個變數並將預存程序的回傳值賦值給它。以下程式碼示範了此解決方案:

<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>
登入後複製

以上是如何在 C# 中檢索預存程序的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板