在C#中调用SQL定义的函数

我在TSQL中编写了这个标量函数:

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的内联SQL语句:

 SqlCommand Totalf = new SqlCommand("SELECT dbo.Tcupom(@code)", conex1); 

并删除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; }