使用內聯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);
刪除 CommandType 屬性至關重要,因為 UDF 不是預存程序。
修改後的程式碼將如下所示:
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中文網其他相關文章!