Я пробовал разные способы, но не повезло.Используя Microsoft Visual Studio и SQL Server 2005, вот код c # и код sql
List<SqlParameter> _params3 = new List<SqlParameter>();
_params3.Add(new SqlParameter("@startdate", txtDateFrom.Text));
_params3.Add(new SqlParameter("@enddate", txtDateTo.Text));
_params3.Add(new SqlParameter("@days", extendedDays));
extendedDays = Convert.ToInt32(DAL.executeStoredProcedureScalar(
"Time_Difference_Calc", _params3));
Код SQL:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[Time_Difference_Calc]
-- Add the parameters for the stored procedure here
@startdate datetime,
@enddate datetime,
@days int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
set @days = (Select RawDays
- NumWeeks * 2
+ CASE WHEN StartWD = 1 THEN 1 ELSE 0 END
- CASE WHEN EndWD = 7 THEN 1 ELSE 0 END
+ 1
AS Result
FROM
(SELECT Datepart(dw,@startdate) as StartWD,
Datepart(dw,@enddate) as EndWD,
DateDiff(d,@startdate,@enddate) as RawDays,
DateDiff(wk,@startdate,@enddate) as NumWeeks
) A)
--SET @ReturnValue = @days
RETURN @days
END
Я могу запустить его в базе данных просто отлично .. вывод 2даты в .. отлично работает для того, что мне нужно ..
Но всякий раз, когда я запускаю его на странице, всегда получаю
System.NullReferenceException: ссылка на объект не установлена наэкземпляр объекта. "
ошибка источника: return cmd.ExecuteScalar (). ToString ();
Любая помощь приветствуется. Практически идея заключается в том, что я просто хочу получить расширенные дни равнымик тому, что возвращает хранимая процедура.