从 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()
通过
以下是用于检索此输出参数的更新的 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中文网其他相关文章!