首頁 > 後端開發 > C++ > 如何從 C# 中的預存程序檢索輸出參數?

如何從 C# 中的預存程序檢索輸出參數?

Mary-Kate Olsen
發布: 2025-01-10 08:05:42
原創
731 人瀏覽過

How to Retrieve Output Parameters from a Stored Procedure in C#?

從 C# 中的預存程序中擷取輸出參數

許多資料庫互動都利用預存程序來有效管理資料。 一個常見的要求是檢索輸出參數,特別是在處理自動產生的主鍵時。 此範例示範了在使用 SQL Server 預存程序時如何正確處理 C# 中的輸出參數。

在 INSERT 操作後嘗試擷取新產生的主鍵時經常會出現此問題。 以下修改後的預存程序提供了解決方案:

<code class="language-sql">CREATE PROCEDURE usp_InsertContract
(
  @ContractNumber varchar(7),
  @NewId int OUTPUT
)
AS
BEGIN
  INSERT INTO [dbo].[Contracts] (ContractNumber)
  VALUES (@ContractNumber);

  SELECT @NewId = SCOPE_IDENTITY();
END;</code>
登入後複製

此預存程序接受合約編號,並使用 @NewId.SCOPE_IDENTITY() 透過

輸出參數傳回新產生的 ID

以下是用於檢索此輸出參數的更新的 C# 程式碼:

<code class="language-csharp">// Establish database connection and command object
using (SqlConnection conn = new SqlConnection(pvConnectionString))
using (SqlCommand cmd = new SqlCommand("dbo.usp_InsertContract", conn))
{
  cmd.CommandType = CommandType.StoredProcedure;

  // Define and add parameters
  cmd.Parameters.AddWithValue("@ContractNumber", contractNumber);
  cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output;

  // Open connection and execute the stored procedure
  conn.Open();
  cmd.ExecuteNonQuery();

  // Retrieve the output parameter value
  int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);
  conn.Close();
}</code>
登入後複製

此 C# 程式碼連接到資料庫,執行預存程序,並有效率地檢索 @NewId 輸出參數,並將其儲存在 contractID 變數中。 新產生的主鍵現在可在您的應用程式中進行進一步處理。

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

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