作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我尝试了多种方法,但都不成功。使用 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: Object reference not set to an instance of an object."
source error : return cmd.ExecuteScalar().ToString();
感谢任何帮助。基本上我的想法是,我只想获得与存储过程返回的任何内容相等的延长天数。
最佳答案
您需要设置@day 参数的Direction
属性为ParameterDirection
.输出
此外,您还必须从@day SqlParamater
中获取值. Value
属性
关于c# - 获取值存储过程 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198237/
我是一名优秀的程序员,十分优秀!