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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-19 21:39:15473ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。