首页 >后端开发 >C++ >如何从 C# 中的存储过程检索输出参数?

如何从 C# 中的存储过程检索输出参数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-10 08:05:42752浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn