Récupération des paramètres de sortie des procédures stockées en C#
De nombreuses interactions avec des bases de données utilisent des procédures stockées pour gérer efficacement les données. Une exigence courante consiste à récupérer les paramètres de sortie, en particulier lorsqu'il s'agit de clés primaires générées automatiquement. Cet exemple montre comment gérer correctement les paramètres de sortie en C# lorsque vous travaillez avec des procédures stockées SQL Server.
Le problème survient souvent lorsque vous essayez de capturer la clé primaire nouvellement générée après une opération INSERT. La procédure stockée modifiée suivante fournit une solution :
<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>
Cette procédure stockée accepte un numéro de contrat et renvoie l'ID nouvellement généré via le paramètre de sortie @NewId
en utilisant SCOPE_IDENTITY()
.
Voici le code C# mis à jour pour récupérer ce paramètre de sortie :
<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>
Ce code C# se connecte à la base de données, exécute la procédure stockée et récupère efficacement le paramètre de sortie @NewId
, en le stockant dans la variable contractID
. La clé primaire nouvellement générée est désormais disponible pour un traitement ultérieur au sein de votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!