2 つの整数出力パラメーターを含むストアド プロシージャを実行する SqlCommand があります。SqlCommand が実行される直前に、出力パラメーターが正しい値に設定されていることがわかりますが、コマンドが実際に実行されると、パラメーターの設定に関係なく、パラメーター 1 に NULL が使用され、パラメーター 2 (SQL プロファイラーを使用して検証されます) に 0 が使用されます。 .
コードの簡略化されたバージョンは次のとおりです。
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();
私はここで2つの異なることに混乱しています:
1) パラメータの値を使用しないのはなぜですか? 直前にブレークポイントを配置command.ExecuteNonQuery()
して、command.Parameters リストに出力パラメーターが正しく設定されていることを確認できますが、クエリが実行されると、SQL プロファイラー トレースには異なるパラメーターが含まれます。
2) 両方のパラメータは整数であり、まったく同じ方法で定義されています - なぜ一方が NULL に設定され、もう一方が 0 に設定されているのですか??