2011-01-10 26 views
0

Visual Studio 2010の使用一部のデータを記録する必要がある高速.NETアプリケーションをまとめています。私はSQL Server Expressの組み込み機能を使用しており、データ挿入のためのストアドプロシージャを作成しました。問題のフィールドでNullを許可するようにデータベーステーブルを設定しましたが、実行時例外を生成しています "プロシージャまたは関数 'XYZ'はパラメータ '@ErrorCode'を提供しませんでした。SQL Server Express ...ストアドプロシージャ「Nullパラメータ」エラー

私は「プレーン道」SqlParametersを作成しようとした:

command.Parameters.Add(new SqlParameter("ErrorCode", state.ErrorCode)); 

私もプロパティのより設定することで、それらを作成しようとした:状態オブジェクトの

SqlParameter errorCodeParam = new SqlParameter("ErrorCode", SqlDbType.Int); 
errorCodeParam.IsNullable = true; 
errorCodeParam.Value = state.ErrorCode; 
command.Parameters.Add(errorCodeParam); 

私のErrorCodeプロパティを単にnullable int .... "int?"割り当てられた値が「null」である。このフィールドのテーブルの列がNULLを許可すると、私はそれがなぜ不平を言っているのかちょっとわかりません。

思考やアイデア?ありがとう。

+0

あなたはパラメータを宣言しました。 – u07ch

+0

確かに私はしませんでした。しかし、私はそれを変更すると、私はそれを保存することはできません。 「Null」のキーワードの近くに構文が正しくないというコンパイルエラーが表示されるスケーラ変数「@ErrorCode」を宣言する必要があります。スケーラ変数「@PrimaryKey」を宣言する必要があります。面白いのは、@StatusCodeという名前のパラメタに先行するもう1つのnull可能なintがあり、システムがそれに不平を言っていないということです。ハム?? – BonanzaDriver

答えて

1

いくつかの追加実験の後、私は答えを見つけました(他の誰かが同じ状況に遭遇した場合、私はそれを一緒に渡すと思いました)。私は、次のようなステートメントを使用している:

command.Parameters.Add(new SqlParameter("ErrorCode", (state.ErrorCode != null ? state.ErrorCode : null))); 

私がNULL可能でint型の値をチェックしていますこれにより価値を持っているかどうかを確認し、そうでない場合、SqlParameterにC#のヌルを割り当てるために...(int型?) .. DBNull.Valueが代わりにが必要です。 nullはあなたがそのように宣言する必要が手続き上の暗黙的ではありません この @MyParam MyDataType Nullのようなあなたの手順で

関連する問題