【问题标题】:MS SQL function not returning value to C# [duplicate]MS SQL函数没有向C#返回值[重复]
【发布时间】:2016-07-09 04:29:17
【问题描述】:

我有以下 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() 调用它,但没有成功。

这里出了什么问题?

【问题讨论】:

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

标签: c# sql-server nullreferenceexception executescalar


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多