Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ExecuteOnQuery()错误->;nvarchar值的转换';3955811801';溢出了一个int列。_Asp.net_Sql Server 2008_Stored Procedures_Executenonquery - Fatal编程技术网

Asp.net ExecuteOnQuery()错误->;nvarchar值的转换';3955811801';溢出了一个int列。

Asp.net ExecuteOnQuery()错误->;nvarchar值的转换';3955811801';溢出了一个int列。,asp.net,sql-server-2008,stored-procedures,executenonquery,Asp.net,Sql Server 2008,Stored Procedures,Executenonquery,我的代码如下所示: using (SqlConnection _conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DarmanConnectionString"].ToString())) { using (SqlCommand _cmd = new SqlCommand("dbo.sp_Noskheh_SumOfTotalPay", _conn)) { _cmd.CommandTyp

我的代码如下所示:

using (SqlConnection _conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DarmanConnectionString"].ToString()))
{
    using (SqlCommand _cmd = new SqlCommand("dbo.sp_Noskheh_SumOfTotalPay", _conn))
    {
        _cmd.CommandType = CommandType.StoredProcedure;
        _cmd.Parameters.Add(new SqlParameter("@Co_ID", int.Parse(Session["Co_ID"].ToString())));

        _cmd.Parameters.Add(new SqlParameter("@RETURN_VALUE", SqlDbType.NVarChar));
        _cmd.Parameters["@RETURN_VALUE"].Direction = ParameterDirection.ReturnValue;

        _conn.Open();
        _cmd.ExecuteNonQuery();

        Int64 result = Int64.Parse(_cmd.Parameters["@RETURN_VALUE"].Value.ToString());
        lblSumTotalPayShow.Text = result.ToString();

            _conn.Close();
        }
    }
我的SP是这样的:

create Procedure [dbo].[sp_Noskheh_SumOfTotalPay]
    @Co_ID int
As    
    -----------------
    Declare @Sum nvarchar(50)
    -----------------    
BEGIN
    Select @Sum = convert(nvarchar(50), SUM(TotalPay))
    From Noskheh
    Where (Co_ID = @Co_ID)

    Return @Sum
END
错误在(_cmd.ExecuteNonQuery();)行中:

错误:

Sys.WebForms.PageRequestManagerServerErrorException:的转换 nvarchar值“3955811801”溢出了一个int列。这个 “sp_Noskheh_SumOfTotalPay”过程试图返回的状态为 NULL,这是不允许的。将返回0的状态

你能帮我解决这个问题吗

  • 将@Co_ID更改为bigint。3955811801高于2^31-1

  • 总和大于2^31-1。返回尝试将其转换为int,但失败。 使用输出参数或仅返回记录集

  • 像这样

    create Procedure [dbo].[sp_Noskheh_SumOfTotalPay]
     @Co_ID int,
     @Sum nvarchar(50) OUTPUT --or bigint?
    As
    
    BEGIN
     Select 
      @Sum = convert(nvarchar(50), SUM(TotalPay))
     From Noskheh
      Where
      (Co_ID = @Co_ID)
    END
    

  • 将@Co_ID更改为bigint。3955811801高于2^31-1

  • 总和大于2^31-1。返回尝试将其转换为int,但失败。 使用输出参数或仅返回记录集

  • 像这样

    create Procedure [dbo].[sp_Noskheh_SumOfTotalPay]
     @Co_ID int,
     @Sum nvarchar(50) OUTPUT --or bigint?
    As
    
    BEGIN
     Select 
      @Sum = convert(nvarchar(50), SUM(TotalPay))
     From Noskheh
      Where
      (Co_ID = @Co_ID)
    END
    


    如果问题不是其他人指出的@Co_ID,那么
    总和(TotalPay)
    可能等于您的39亿美元。如果TotalPay列是整数,那么在转换为varchar之前,总和是整数。

    如果问题不是其他人指出的@Co_ID,那么
    总和(TotalPay)
    可能等于您的39亿值。如果TotalPay列为整数,则在转换为varchar之前,总和为整数。

    您正在尝试将nvarchar值转换为
    int

    尝试更改您的方法,并在存储的过程中执行

    选择@Sum
    而不是
    返回@Sum

    然后使用
    ExecuteScalar

    String result = (String)cmd.ExecuteScalar();
    lblSumTotalPayShow.Text = result.ToString();
    

    您正在尝试将nvarchar值转换为
    int

    尝试更改您的方法,并在存储的过程中执行

    选择@Sum
    而不是
    返回@Sum

    然后使用
    ExecuteScalar

    String result = (String)cmd.ExecuteScalar();
    lblSumTotalPayShow.Text = result.ToString();
    

    Noskheh.Co_ID的数据类型是什么?@Co_ID=3955811801吗?Noskheh.Co_ID的数据类型是什么?@Co#u ID=3955811801吗?作为临时解决办法,您可以将SP中的所有参数更改为bigint或varchar。第一种方法没有帮助//我无法使用第二种方法,因为我的c#类//您无论如何都不应该对用户数据使用return。您必须使用我提到的两种方法之一。没有其他方法可以获取数据。您可以将SP中的所有参数更改为bigint或varchar作为临时解决方法。第一种方法没有帮助//我无法使用第二种方法,因为我的c#类//您无论如何都不应该对用户数据使用return。您必须使用我提到的两种方法中的一种。没有其他方法可以获取数据。您可以在我的sp Select@Sum exists//中进行更多的导出吗?我应该在sp和后面的代码中更改哪些内容?您可以在我的sp Select@Sum exists//中进行更多的导出吗?我应该在sp和后面的代码中更改哪些内容