MS SQL 函数未向 C# 返回值 [重复]

MS SQL function not returning value to C# [duplicate]

提问人:SlowCoder74 提问时间:7/9/2016 更新时间:7/9/2016 访问量:168

问:

我有以下MS SQL函数:

CREATE FUNCTION [dbo].[fn_NumApplications] ()
RETURNS int
AS
BEGIN
DECLARE @numRecords int = 0
SELECT @numRecords = COUNT(A.id) FROM Applications A
RETURN @numRecords
END

以及以下 C# 代码来调用该函数:

using (SqlConnection conn = new SqlConnection(mydbconnstring))
{
    using (SqlCommand cmd = new SqlCommand("dbo.fn_numApplications", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        //execute
        conn.Open();
        string retVal = cmd.ExecuteScalar().ToString();
        conn.Close();
    }
}

当函数到达cmd.ExecuteScalar()时,我得到一个NullReferenceException。

我尝试过使用和不使用“dbo”调用该函数。我也尝试使用 cmd.ExecuteReader() 调用它,但没有成功。

这是怎么回事?

C# SQL-Server NullReferenceException 执行标量

评论

0赞 Sean Lange 7/9/2016
不仅需要括号和 SELECT 关键字,而且如果排序规则区分大小写,这将引发异常,因为函数名称在 c# 代码中没有大写字母 N。当然,我建议将其转换为内联表值函数。
0赞 granadaCoder 7/9/2016
缺少 dbo 前面的 SELECT 语句。我的函数。你应该先在SSMS中运行代码......学习语法

答:

0赞 Navid K 7/9/2016 #1

试试这个:

SqlCommand cmd = new SqlCommand("Select dbo.fn_numApplications()", conn)