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
Susan Sarandonoriginal
2025-01-20 01:32:08791parcourir

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>

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>

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>

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