代码之家  ›  专栏  ›  技术社区  ›  Rachel

C#-Output SqlParameter使用的值与给定值不同?

  •  2
  • Rachel  · 技术社区  · 15 年前

    我有一个SqlCommand,它运行一个包含两个整数输出参数的存储过程。就在SqlCommand运行之前,我可以看到输出参数被设置为正确的值,但是当命令实际执行时,无论我将参数设置为什么,它都会对parameter1使用NULL,对parameter2使用0(使用SQL Profiler验证)。

    foreach (KeyValuePair<string, object> parameter in outputParameters)
    {
        SqlParameter param = new SqlParameter(parameter.Key, parameter.Value);
        param.Direction = ParameterDirection.Output;
        command.Parameters.Add(param);
    }
    
    command.ExecuteNonQuery();
    

    我被两件不同的事情弄糊涂了:

    command.ExecuteNonQuery()

    2) 两个参数都是整数,定义方式完全相同-为什么一个参数设置为NULL,而另一个参数设置为0??

    2 回复  |  直到 15 年前
        1
  •  3
  •   Jon Skeet    15 年前

    他们是 参数-即值是指 存储过程。。。从逻辑上说他们没有 InputOutput .

    Output 只是 输出。 Input 输入输出 输入输出 .

    至于为什么一个是空的而另一个不是。。。老实说,我不知道。

        2
  •  4
  •   JonH    15 年前

    您希望将方向更改为InputOutput(按操作编辑),而不是output。

    应该是这样的:

    foreach (KeyValuePair<string, object> parameter in outputParameters)
    {
        SqlParameter param = new SqlParameter(parameter.Key, parameter.Value);
        param.Direction = ParameterDirection.InputOutput;
        command.Parameters.Add(param);
    }
    
    command.ExecuteNonQuery();
    
    推荐文章