Функция MS SQL не возвращает значение в С#

У меня есть следующая функция 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().

Что здесь не так?


person SlowCoder74    schedule 08.07.2016    source источник
comment
Вам нужны не только круглые скобки и ключевое слово SELECT, но если у вас есть сопоставление с учетом регистра, это вызовет исключение, потому что имя функции не имеет заглавной буквы N в вашем коде С#. Конечно, я бы предложил вместо этого превратить это во встроенную табличную функцию.   -  person Sean Lange    schedule 08.07.2016
comment
Вам не хватает оператора SELECT перед dbo.MyFunction. Сначала вы должны запустить код в SSMS......, чтобы изучить синтаксис   -  person granadaCoder    schedule 08.07.2016


Ответы (1)


Попробуй это:

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

person Navid K    schedule 08.07.2016