2016-07-08 8 views
0

У меня есть следующие функции MS SQL:MS SQL функций, не возвращает значение C#

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() без успеха.

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

+0

Не только вам нужна скобка и SELECT, ключевое слово, но если у вас есть чувствительна к регистру сверки это будет сгенерировано исключение, потому что имя функции не имеет капитал N в вашем коде C#. Конечно, я бы предложил сделать это встроенной табличной функцией. –

+0

Вам не хватает инструкции SELECT перед dbo.MyFunction. Сначала вы должны запустить код в SSMS ......, чтобы узнать синтаксис – granadaCoder

ответ

1

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

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