首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板