c# - 获取值存储过程 C#

标签 c# sql-server-2005 stored-procedures

我尝试了多种方法,但都不成功。使用 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/

相关文章:

c# - 在 asp.net 中使用带项目符号列表的 xml

c# - 带有重音符号的 MailMessage 附件文件名

SQL Server - OPENQUERY

sql - MS SQL 2008 - 如何将 xml 值转换为 ms sql 表中的行集合?

mysql - 其他数据库中的过程表

sql - 如何在 Crystal 报表中使用多个存储过程?

c# - 如何从 ModelBinder 中检索配置 'Options' 实例?

c# - 从 POJO 到 POCO 的转换

c# - 使用 Trusted_Connection=true 和 SQL Server 身份验证时,这会影响性能吗?

sql - 只显示有 MOrderNo 的子订单号