我有一个 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();
我在这里对两件不同的事情感到困惑:
1)为什么不使用参数中的值?我可以在前面放置一个断点,command.ExecuteNonQuery()
然后查看 command.Parameters 列表的输出参数设置是否正确,但是 SQL 探查器跟踪在执行查询时具有不同的参数。
2) 两个参数都是整数,定义方式完全相同——为什么一个设置为 NULL 而另一个设置为 0?