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
Libérer: 2025-01-10 09:11:41
original
594 Les gens l'ont consulté

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 :

CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber);

    SELECT @NewId = SCOPE_IDENTITY();
END;
Copier après la connexion

Implémentation C#

L'extrait de code C# ci-dessous montre comment gérer le paramètre de sortie :

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);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal