使用内联 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中文网其他相关文章!