ホームページ > データベース > mysql チュートリアル > C# から SQL Server ユーザー定義関数 (UDF) を正しく呼び出す方法は?

C# から SQL Server ユーザー定義関数 (UDF) を正しく呼び出す方法は?

Mary-Kate Olsen
リリース: 2024-12-19 21:39:15
オリジナル
514 人が閲覧しました

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

インライン SQL を使用した C# での SQL 定義関数の呼び出し

SQL Server では、ユーザー定義関数 (UDF) を使用してデータの操作と分析を強化できます能力。 C# コードからスカラー UDF を呼び出すには、正しいアプローチを採用することが重要です。

次の TSQL スカラー UDF について考えてみましょう。

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
ログイン後にコピー

この関数を C# コードで呼び出すには、次のように試みます。ストアド プロシージャのような構文を使用するには:

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;
}
ログイン後にコピー

ただし、このアプローチは正しくありません。 UDF を呼び出すには、SqlCommand オブジェクト内でインライン SQL を使用する必要があります。

SqlCommand Totalf = new SqlCommand("SELECT dbo.Tcupom(@code)", conex1);
ログイン後にコピー

UDF はストアド プロシージャではないため、CommandType プロパティを削除することが重要です。

変更されたコードは次のようになります。

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;
}
ログイン後にコピー

開発者は、インライン SQL を使用して UDF を呼び出すことで、 C# アプリケーションでユーザー定義関数の機能を効果的に活用できます。

以上がC# から SQL Server ユーザー定義関数 (UDF) を正しく呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート