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# ?

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# ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 09:11:41542parcourir

How Can I Retrieve Output Parameters, Including SCOPE_IDENTITY(), from SQL Server Stored Procedures in C#?

Accès aux paramètres de sortie à partir des procédures stockées SQL Server dans les applications C#

Le défi

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.

Exemple de procédure stockée

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>

Implémentation C#

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>

Pièges courants et solutions

Si vous rencontrez des problèmes, vérifiez les points suivants :

  • Colonne d'identité : Confirmez que votre table Contracts comprend une colonne d'identité (clé primaire à incrémentation automatique).
  • Utilisation de SCOPE_IDENTITY() : Assurez-vous de l'utilisation correcte de SCOPE_IDENTITY() dans la procédure stockée pour récupérer la dernière valeur d'identité insérée.
  • Configuration des paramètres : Vérifiez à nouveau que l'objet 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn