Maison >base de données >tutoriel mysql >Comment appeler correctement une fonction définie par l'utilisateur (UDF) SQL Server à partir de C# ?

Comment appeler correctement une fonction définie par l'utilisateur (UDF) SQL Server à partir de C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 21:39:15477parcourir

How to Correctly Call a SQL Server User-Defined Function (UDF) from C#?

Appel de fonctions définies par SQL en C# à l'aide de Inline SQL

Dans SQL Server, les fonctions définies par l'utilisateur (UDF) peuvent améliorer la manipulation et l'analyse des données capacités. Pour invoquer une UDF scalaire à partir du code C#, il est important d'utiliser la bonne approche.

Considérez l'UDF scalaire TSQL suivante :

create function TCupom (@cupom int)
returns float
as
begin
    declare @Tcu float;
    select @Tcu = sum (total) from alteraca2 where pedido = @cupom 
    if (@tcu is  null)
        set @tcu = 0;
    return @tcu;
end

Pour appeler cette fonction dans le code C#, on peut tenter pour utiliser une syntaxe de type procédure stockée :

public void TotalCupom(int cupom)
{ 
    float SAIDA;           
    SqlDataAdapter da2 = new SqlDataAdapter();

    if (conex1.State == ConnectionState.Closed)
    { 
        conex1.Open();
    }

    SqlCommand Totalf = new SqlCommand("Tcupom", conex1);
    SqlParameter code1 = new SqlParameter("@code", SqlDbType.Int);
    code1.Value = cupom ;
    Totalf.CommandType = CommandType.StoredProcedure ;
    SAIDA = Totalf.ExecuteScalar();

    return SAIDA;
}

Cependant, cette approche est incorrecte. Pour invoquer une UDF, il est nécessaire d'utiliser du SQL en ligne dans un objet SqlCommand :

SqlCommand Totalf = new SqlCommand("SELECT dbo.Tcupom(@code)", conex1);

Il est crucial de supprimer la propriété CommandType, car les UDF ne sont pas des procédures stockées.

Le code modifié apparaissent comme suit :

public void TotalCupom(int cupom)
{ 
    float SAIDA;           
    SqlDataAdapter da2 = new SqlDataAdapter();
    if (conex1.State == ConnectionState.Closed)
    {
        conex1.Open();
    }
    SqlCommand Totalf = new SqlCommand("SELECT dbo.Tcupom(@code)", conex1);
    SqlParameter code1 = new SqlParameter("@code", SqlDbType.Int);
    code1.Value = cupom;
    SAIDA = Totalf.ExecuteScalar();

    return SAIDA;
}

En utilisant du SQL en ligne pour appeler l'UDF, les développeurs peuvent exploiter efficacement la puissance de fonctions définies par l'utilisateur dans leurs 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