首页 > 数据库 > mysql教程 > 如何从 C# 正确调用 SQL Server 用户定义函数 (UDF)?

如何从 C# 正确调用 SQL Server 用户定义函数 (UDF)?

Mary-Kate Olsen
发布: 2024-12-19 21:39:15
原创
470 人浏览过

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);
登录后复制

删除 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板