Maison >développement back-end >C++ >Comment puis-je récupérer les paramètres de sortie, y compris SCOPE_IDENTITY(), à partir des procédures stockées SQL Server en C# ?
Récupérer avec succès les valeurs des paramètres de sortie, en particulier la clé primaire à l'aide de SCOPE_IDENTITY()
, à partir des procédures stockées SQL Server en C# peut être délicat. Cet article aborde les difficultés courantes et propose une solution pratique.
La usp_InsertContract
procédure stockée démontre le processus. Il insère un enregistrement dans la table Contracts
et renvoie la clé primaire nouvellement générée (la colonne Id
) via le paramètre de sortie @NewId
. La procédure mise à jour utilise SCOPE_IDENTITY()
pour une récupération précise de la clé primaire :
<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>
L'extrait de code C# ci-dessous montre comment gérer le paramètre de sortie :
<code class="language-csharp">SqlParameter pvNewId = new SqlParameter(); pvNewId.ParameterName = "@NewId"; pvNewId.DbType = DbType.Int32; pvNewId.Direction = ParameterDirection.Output; // ... (Add pvNewId to the SqlCommand object 'cmd') ... // Execute the stored procedure cmd.ExecuteNonQuery(); // Retrieve the output value int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);</code>
Si vous rencontrez des problèmes, vérifiez les points suivants :
Contracts
comprend une colonne d'identité (clé primaire à incrémentation automatique).SCOPE_IDENTITY()
dans la procédure stockée pour récupérer la dernière valeur d'identité insérée.SqlParameter
(pvNewId
) est correctement ajouté à l'objet SqlCommand
(cmd
) et que ses propriétés (ParameterName
, DbType
, Direction
) sont réglés avec précision.En abordant ces points, vous pouvez récupérer efficacement les paramètres de sortie, y compris ceux générés par SCOPE_IDENTITY()
, à partir de vos procédures stockées SQL Server au sein de vos applications C#.
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!