Maison > développement back-end > C++ > Comment récupérer les valeurs de retour d'une procédure stockée en C# ?

Comment récupérer les valeurs de retour d'une procédure stockée en C# ?

Susan Sarandon
Libérer: 2025-01-20 01:32:08
original
751 Les gens l'ont consulté

How to Retrieve Stored Procedure Return Values in C#?

Récupérer la valeur de retour de la procédure stockée en C#

Lors de l'appel d'une procédure stockée qui renvoie une valeur en C#, il est crucial de gérer correctement la valeur de retour dans le code. Cet article décrit ce problème et propose une solution pour récupérer avec succès les valeurs de retour des procédures stockées.

Énoncé du problème

Une application C# doit appeler une procédure stockée qui renvoie la valeur suivante dans une séquence. Malgré le suivi des solutions en ligne, je ne parviens toujours pas à récupérer la valeur de retour. L'extrait de code fourni inclut la création d'un objet SqlCommand, la spécification de la procédure stockée comme texte de commande et l'utilisation d'un SqlConnection pour exécuter la commande. Cependant, la valeur de retour de la procédure stockée n'est pas récupérée.

Code de procédure du magasin

<code class="language-sql">ALTER procedure [dbo].[usp_GetNewSeqVal]
      @SeqName nvarchar(255)
as
begin
      declare @NewSeqVal int
      set NOCOUNT ON
      update AllSequences
      set @NewSeqVal = CurrVal = CurrVal+Incr
      where SeqName = @SeqName

      if @@rowcount = 0 begin
print 'Sequence does not exist'
            return
      end

      return @NewSeqVal
end</code>
Copier après la connexion

Code C# pour appeler une procédure stockée

<code class="language-csharp">SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();

SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter();

param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";

SqlDataReader reader = cmd.ExecuteReader();</code>
Copier après la connexion

Solution

Pour obtenir la valeur de retour de la procédure stockée, vous devez ajouter un paramètre avec la direction ReturnValue à l'objet SqlCommand. Cela demande à la commande de déclarer une variable et de lui attribuer la valeur de retour de la procédure stockée. Le code suivant illustre la solution :

<code class="language-csharp">using (SqlConnection conn = new SqlConnection(getConnectionString()))
using (SqlCommand cmd = conn.CreateCommand())
{
    cmd.CommandText = parameterStatement.getQuery();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("SeqName", "SeqNameValue");

    // @ReturnVal 可以是任何名称
    var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int);
    returnParameter.Direction = ParameterDirection.ReturnValue;

    conn.Open();
    cmd.ExecuteNonQuery();
    var result = returnParameter.Value;
}</code>
Copier après la connexion

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!

source:php.cn
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