首頁 >資料庫 >mysql教程 >如何從 C# 正確呼叫 SQL 定義函數 (UDF)?

如何從 C# 正確呼叫 SQL 定義函數 (UDF)?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-25 16:11:09253瀏覽

How to Correctly Call SQL Defined Functions (UDFs) from C#?

在C# 中呼叫SQL 定義的函數

在C# 程式碼中使用SQL 定義的函數查詢資料庫在存取使用者定義的函數時需要特別注意( SQL 查詢中的UDF)。以下是如何從 C# 程式碼呼叫名為「Tcupom」的 T-SQL 標量函數:

SQL 函數:

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# 程式碼:

原文錯誤碼:
原本的C#程式碼犯了兩個錯誤:

  1. 直接將UDF的名字當作指令調用,這不是訪問UDF的正確語法。
  2. 將 CommandType 設定為 StoredProcedure,而其應為 Text UDF。

更正的程式碼:
下面修正的程式碼示範如何正確呼叫「Tcupom」函數C#:

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;
}

說明:

  • SqlCommand物件是使用包含 UDF 的完全限定名稱 dbo.Tcupom 的 SQL 查詢語句建構的。
  • SqlParameter 物件是使用 UDF 的輸入參數名稱定義的, @code,其值設定為傳遞給 C# 方法的 cupom 參數。
  • ExecuteScalar() 方法用於執行 UDF 並擷取其標量結果。

以上是如何從 C# 正確呼叫 SQL 定義函數 (UDF)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn